 |
Coders' city Nasza pasja to programowanie!
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Damian0
Dołączył: 09 Lut 2019 Posty: 2
|
Wysłany: Sob Lut 09, 2019 9:02 am OP Temat postu: [C#]Błąd "Indeks wykraczał poza granice tablicy.” |
|
|
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 |
|
 |
|
samolot
Dołączył: 26 Sty 2006 Posty: 8300 Skąd: Toruń
|
Wysłany: Sob Lut 09, 2019 4:56 pm Temat postu: |
|
|
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 |
|
 |
Damian0
Dołączył: 09 Lut 2019 Posty: 2
|
Wysłany: Sob Lut 09, 2019 5:20 pm OP Temat postu: |
|
|
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 |
|
 |
losmac
Dołączył: 25 Maj 2005 Posty: 1560 Skąd: Białystok
|
Wysłany: Wto Lut 12, 2019 8:30 am Temat postu: |
|
|
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 |
|
 |
|
|
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
|