Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[C#]Błąd "Indeks wykraczał poza granice tablicy.”



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Damian0



Dołączył: 09 Lut 2019
Posty: 2

PostWysłany: Sob Lut 09, 2019 9:02 am  OP    Temat postu: [C#]Błąd "Indeks wykraczał poza granice tablicy.” Odpowiedz z cytatem Pisownia

Witam,
próbuje napisać w C# prosty kod i kompiluje go w Visual Studio 2017, ale cały czas wyskakuje błąd System.IndexOutOfRangeException: „Indeks wykraczał poza granice tablicy.”
Kod:

using System;

namespace Pierwsza_aplikacja_Damiana
{
    class Program
    {
        static void Main(string[] args)
        {
            string imie = args[0];

            Console.WriteLine("Witaj " + imie);

        }
    }
}



Teoretycznie wszystko jest OK, ale po debugowaniu dostaje błąd w 9 linii, czyli
Kod:
string imie = args[0];


Dopiero się uczę i będę wdzięczny jeśli ktoś mi podpowie co robię źle.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8300
Skąd: Toruń

PostWysłany: Sob Lut 09, 2019 4:56 pm      Temat postu: Odpowiedz z cytatem Pisownia

Najbardziej prawdopodobną przyczyną twojego błędu może być to, że tablica została zadeklarowana, ale nie została w żaden sposób zainicjowana jeśli chodzi o ilość elementów w niej. Bo widzę, że w twoim kodzie odwołujesz się do elementu tablicy o indeksie 0, (czyli do pierwszego elementu w tablicy), a mimo to otrzymujesz komunikat o błędzie „Indeks wykraczał poza granice tablicy.” co może świadczyć o tym, że tablica jest pusta, nie zawiera żadnego elementu, nawet tego pierwszego indeksie 0.

Elementy w tablicy są indeksowane od 0, a nie od 1.
Dlatego jeśli tablica na przykład 10 elementów, to one maja indeksy od 0 do 9, a nie od 1 do 10.
Bardzo częstym błędem jest to gdy kod odwołuje się nie do końcowego elementu o indeksie 9 ale do elementu o indeksie 10, który już w tej tablicy nie istnieje.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Damian0



Dołączył: 09 Lut 2019
Posty: 2

PostWysłany: Sob Lut 09, 2019 5:20 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzięki za odpowiedź, właśnie mnie oświeciło że program nie działał przez moje lenistwo.
Zamiast uruchomić go przez cmd i podać jakąś wartość, to ja odpalałem go w Visual Studio, bez podania argumentu (myśałem, że jeśli nie podam argumentu to wyświetli się samo "Witaj").
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
losmac



Dołączył: 25 Maj 2005
Posty: 1560
Skąd: Białystok

PostWysłany: Wto Lut 12, 2019 8:30 am      Temat postu: Odpowiedz z cytatem Pisownia

Damian0 napisał:
Dzięki za odpowiedź, właśnie mnie oświeciło że program nie działał przez moje lenistwo.
Zamiast uruchomić go przez cmd i podać jakąś wartość, to ja odpalałem go w Visual Studio, bez podania argumentu (myśałem, że jeśli nie podam argumentu to wyświetli się samo "Witaj").


Nie musisz odpalać programu z wiersza poleceń. Możesz ustawić parametry uruchomieniowe w VS.
Dla VS 2012 - we właściwościach projektu odnajdź zakładkę [Debug] i w [Start options] podaj [Command line arguments]. W innych wersjach VS pewnie jest podobnie.


Co do linii:
Kod:
string imie = args[0];

muszę Cię ostrzec, że pracując z tablicami zawsze powinieneś sprawdzić, czy tablica jest wypełniona, np.:
Kod:
string imie = "Nieznajomy";
if(args.Length>0)
    imie = args[0];

Console.WriteLine("Witaj, {0}!", imie);


Jest też kilka innych sposobów, ale na początek to powinno Ci wystarczyć.
Więcej znajdziesz na stronach Microsoftu: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/single-dimensional-arrays

_________________
książka o VBA dla Office'a
źródło wiedzy o programowaniu w VBA
UWAGA! Nie odpowiadam na PW, jeżeli wcześniej nie zostało to ze mną ustalone w ramach konkretnego wątku!
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.12787 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |