Kezdőoldal » Számítástechnika » Programozás » Miért írja ki, hogy Az index...

Miért írja ki, hogy Az index a tömb határain kívülre mutatott?

Figyelt kérdés

Valaki segít megtalálni a hibát? Nem hiszem, hogy túl kevés helyet adtam volna meg a tömbnek, más hibát pedig nem veszek észre:

A hiba az adatok bekérésénél van


struct keszlet

{

public string varos;

public string aru;

public int db;

}

static keszlet[] x = new keszlet[1000];

static int n = 0;

static string[] varosnev = new string[1000];

static int varosdb = 0;

static string[] termek = new string[1000];

static int termekdb;

static void Main(string[] args)

{

F1_Bekeres();

F2_HanyVaros();

F3_Termekfajta();

Console.ReadKey();

}

static void F1_Bekeres()

{

string[] sor = new string[1000];

StreamReader be = new StreamReader("termek.txt");

int i = 0;

while (!be.EndOfStream)

{

i++;

sor = Console.ReadLine().Split(' ');

x[i].varos = sor[0];

x[i].aru = sor[1]; <--Itt írja ki a hibát

x[i].db = Convert.ToInt32(sor[2]);

}

n = i;

be.Close();

}



2021. márc. 23. 16:41
 1/8 anonim ***** válasza:
Elvileg fájlból olvasol (StreamReader), de közben a konzolból kérsz be egy sort, aztán felszeleteled. (Console.ReadLine().Split(' ');) Nincs mit felszeleteljen a program. Biztos így akartad?
2021. márc. 23. 16:59
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Oh, megvan :) a "Console"-t nem vettem észre, hogy odaírtam, valószínűleg megint autopilotban nyomtam :D
2021. márc. 23. 17:01
 3/8 A kérdező kommentje:
Át is írtam be.ReadLine-ra, így már jó, köszi ^^
2021. márc. 23. 17:03
 4/8 anonim ***** válasza:
100%
Kis megjegyzés: az i változó inkrementálását (i++) átraknám az elől tesztelő ciklus magjának a végére (az x[i].db értékadása után), mert így sose a 0. elemmel kezdi feltölteni az x tömböt.
2021. márc. 23. 17:04
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:
Egyelőre ebben a feladatban azt úgy hagyom, mivel a többi részfeladat akkor nem működik 😵
2021. márc. 23. 17:21
 6/8 anonim ***** válasza:

Mi nem működik?

Mellesleg while helyett:

for(int i=0;!be.EndOfStream;i++)

2021. márc. 23. 20:52
Hasznos számodra ez a válasz?
 7/8 Alex Fly ***** válasza:

Hát jó, ha már ilyen apróságok, akkor a szóközt felesleges mwgadni a splitnek, mert az az alapértelmezés...

be.ReadLine().Split();

2021. márc. 24. 00:40
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
#7 de ha valaki olyan olvassa a kódot aki ezt nem tudja, az is érteni fogja egyből. ;)
2021. márc. 24. 07:01
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!