Kezdőoldal » Számítástechnika » Programozás » C# programozás, miért mutat...

C# programozás, miért mutat az index a tömb határain túlra?

Figyelt kérdés

Adott egy .txt fájl, melyben felhasználóneveket, azok nemét (F vagy N), és internetezéssel eltöltött heti óraszámukat tároljuk, melyek mind szóközzel vannak elválasztva. A 0. sorban a szavazatok száma van...

A feladat azt kéri, hogy vigyen fel a felhasználó is egy újabb rekordot, majd azt tároljuk el a szavazatokat tároló tömbünkben. Ezzel lenne problémám, egyszerűen nem tudom, hogy hogyan hivatkozzak a tömb utolsó elemére, vagy hogy hogyan kéne annak értékét növelni. Az elképzelésem lejjebb található, azonban az else ágra a következő hibát kapom: "System.IndexOutOfRangeException: 'Az index a tömb határain kívülre mutatott.'"

Részlet a programból:

string[] adatok = File.ReadAllLines("../../szavazas.txt");


bool vane = false;

for (int i = 1; i < adatok.Length; i++)

{

if (adatok[i].Split(' ')[0] == azonosito)

{

vane = true;

}

}

if (vane == true)

{

Console.WriteLine("Önnek már van leadott szavazata!");

}

else

{

adatok[adatok.Length] = azonosito + " " + nem + " " + oraszam;

}



2017. ápr. 30. 10:57
 1/7 anonim ***** válasza:
42%
i < adatok.Length -1 ?
2017. ápr. 30. 11:05
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
100%

Nyilván hibás lesz, hiszen túlindexeled.


adatok[adatok.Length-1]

2017. ápr. 30. 11:09
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

#1: majdnem, csaz az i < rész nem kell:)


adatok[adatok.Length - 1] = ...

2017. ápr. 30. 11:10
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:

"for (int i = 1; i < adatok.Length; i++)

{

..."


Ha i = 1-től indítód az indexedet és nem lesz semmi a tömbben, akkor túlindexelted.

2017. ápr. 30. 11:10
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

#4: Ez nem igaz:) Ha 1-től indítja a ciklust és nincs semmi a tömbben, egyszerűen nem fog lefutni a ciklus mag egyszer sem.


Mért, ha 0-tól indítaná és 0 elemű, akkor szted lefut egyszer is?

2017. ápr. 30. 11:22
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

Az, hogy mi van a tömbben az teljesen irreleváns.

Az a kérdés, hogy mekkora a tömb hossza.

2017. ápr. 30. 11:25
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

Köszönöm mindenki segítségét, az adatok[adatok.Length - 1] volt a jó megoldás, ment mindenkinek egy zöld kéz! :)

Azért nem indíthatom 0-tól a ciklust, mert a txt 0. sorában egy darab szám van mindössze, ami az adatfeldolgozás szempontjából (legalábbis ennél a feladatnál) lényegtelen, ezért kihagyom. Meg ha 0-tól kezdeném amúgy is errort dobna rá, hiszen azt nem tudná splitelni.

2017. ápr. 30. 11:55

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!