Kezdőoldal » Számítástechnika » Programozás » Mi a hiba a kódban? (C#)

Mi a hiba a kódban? (C#)

Figyelt kérdés

Ez a kód azt csinálja, hogy az adott képnek a nevét megnézve eldönti, hogy ász e vagy tizes értékű lap e vagy egyéb. Ugyebár a while ciklus addig megy míg azazonos változó true ra nem vált. És ez a for ciklusban van. Mivelígy az azonos változót vagy a while után vagy a while elöt false-ra kell váltani, hogy a while ciklus másodszorra is lefusson ezért, vagy az elejére vagy mőgé el is heyleztem, h azonos=false; De mind kettőnél azt írta, hogy tullépte a tömb méretét. "if (lapnev.Contains(lapokneve[x]))" erre a sorra írta ki a hibát. De a forciklusban kell false ra állítanom a változót, de mindenhogy hibt ír ha false ra álítom. Mitől van? Mit szúrtam el? Itt a kód:


for (int i = 2; i < 4; i++)

{


v = veletlentomb[i];

lapok[i].Location = new Point(hely, 300);

lapok[i].Image = elolap.Images[v];

lapnev = elolap.Images.Keys[v];

hely += 63;

azonos = false;

while (azonos == false)

{

if (lapnev.Contains(lapokneve[x]))

{

ertek = x;

if (x == 12 || x == 25 || x == 38 || x == 51)

{

aszdb++;

asz = true;

azonos = true;

}

else if (x == 8 || x == 9 || x == 10 || x == 11 || x == 21 || x == 22 || x == 23 || x == 24 || x == 34 || x == 35 || x == 36 || x == 37 || x == 47 || x == 48 || x == 49 || x == 50)

{

tizes = true;

azonos = true;

asznelkul += 10;

}

else

{

azonos = true;

asznelkul += ertek + 2;

}

}

x++;

}

}


Köszönöm előre.


2011. okt. 29. 18:14
 1/5 _Jessy_ ***** válasza:
az x-nek hol adsz értéket? Feltételezem az x < 0, vagy nagyobb, mint a lapokneve tömböd hossza. Ennek járj utána, mert az itt leírt kódból ez nem deríthető ki...
2011. okt. 29. 18:47
Hasznos számodra ez a válasz?
 2/5 _Jessy_ ***** válasza:

aha látom már ++x, gondolom nulláról indul. Ez esetben a while-ba tegyél egy olyat, a kritikus sor elé

if(x > lapokneve.Length)

{

//Itt állítsd be úgy a változóidat, hogy nem találtad meg, amit kerestél

break;

}

2011. okt. 29. 18:51
Hasznos számodra ez a válasz?
 3/5 _Jessy_ ***** válasza:
bocsánat, lapokneve.Length - 1
2011. okt. 29. 18:51
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
a whileban az azonos változónak valahol midnenképp true ra kell állnia. Olyan nincs hogy nem áll be arra. Mivel atömb elemei közt biztosan van olyan amire valahol az ifek true ra állítanák. :S és csak akkro nem megy végig ha ott van az azonos=false valahol. ha nicsn ott akor lefut egyszer rendesen csak értelemszerűen mikro a forciklus másodszorra fut le akkro el sem indul benne a while mert a feltétele nem teljesül miszerint while(azonos==false) mert valahol true ra álíltotta a whilban lévő utasítások
2011. okt. 29. 19:13
 5/5 A kérdező kommentje:
Megtaláltam a hiba forrását. :) Sajnos egy kis figyelmetlenség volt. :( A for ciklus elején nullázni kellet az x-et. Bár ez nem tudom, hogy magyarázza, hogy csak akkor rossz a while, ha átállítom false ra a változót, de működik az a fontos. :) Köszönöm az eddigi segítségeket. :)
2011. okt. 29. 19:20

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!