Avatar
Preedy
Člen
Avatar
Preedy:

Ahoj, mám pole a v něm prvky :

int[] pole = new int[8] { 1, 2, 3, 7, 8, 9, 10, 11 };

S těch se snažím vybrat náhodné asi takhle:

Random n = new Random();
int los = nahoda.Next(pole[0], pole[9]);

ale při běhu mi to vyvolá výjimku, označí to řádek int los... je to kvůli tomu, že do mezí píšu indexy pole nebo se to dělá uplně jinak? díky

 
Odpovědět 30.8.2012 10:26
Avatar
Preedy
Člen
Avatar
Odpovídá na Preedy
Preedy:

má tam bejt pole[8], překlik

 
Nahoru Odpovědět 30.8.2012 10:27
Avatar
Odpovídá na Preedy
David Jančík [sczdavos]:

Jde o přetečení máš pole pro 9 prvků. Ale musíš si uvědomit že to začíná od 0. Tzn 9tý prvek je na 8mé pozici. Takže maximum je pole[8].

A podívej se sem. To pole se dá zakládat a plnit i jinak. A nemusíš tam definovat velikost když ho při deklaraci plníš. http://www.itnetwork.cz/…utorial-pole

Nahoru Odpovědět  +1 30.8.2012 10:29
Čím více času dostaneš, tím méně ho máš.
Avatar
Preedy
Člen
Avatar
Preedy:

dík, už to mám

 
Nahoru Odpovědět 30.8.2012 10:33
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Kit:

Má tam jen 8prvkové pole. První prvek je pole[0], poslední je pole[7].

Nahoru Odpovědět 30.8.2012 10:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
David Jančík [sczdavos]:

Já sem ty prvky nepočítal jen jsem se podíval na rozsah a na ten řádek a z toho je hned zřejmé o co jde. Pak už je princip ošetření stejný :)

Nahoru Odpovědět 30.8.2012 10:44
Čím více času dostaneš, tím méně ho máš.
Avatar
Mediel
Redaktor
Avatar
Mediel:
int[] pole = new int[8] { 1, 2, 3, 7, 8, 9, 10, 11 };
Random n = new Random();
int los = n.Next(pole[0], pole[7]);

Console.WriteLine(los.ToString());
//Toto vratilo i hodnotu, kterou toto pole vubec neobsahuje "6" a to z duvodu, ze to vraci pozici, nikoli hodnotu na pozici
int[] pole = new int[8] { 1, 2, 3, 7, 8, 9, 10, 11 };
Random n = new Random();
int pozice = n.Next(0,7);
int hodnotaNaPozici = pole[pozice];

Console.WriteLine(hodnotaNaPozici.ToString());
// takto uz to fungovalo bezchybne :)
Editováno 11.9.2012 14:14
Nahoru Odpovědět 11.9.2012 14:13
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.