C# programozás, miért mutat az index a tömb határain túlra?
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;
}
Nyilván hibás lesz, hiszen túlindexeled.
adatok[adatok.Length-1]
#1: majdnem, csaz az i < rész nem kell:)
adatok[adatok.Length - 1] = ...
"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.
#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?
Az, hogy mi van a tömbben az teljesen irreleváns.
Az a kérdés, hogy mekkora a tömb hossza.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!