NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Marek Richtár:2.12.2016 10:34

Ahoj,
mám takový hloupý dotaz, potřebuji zjistit čísla znaku ve stringu (cislo1)

char znak1 = cislo1[i];
int cisloCharu1 = znak1;

a vždy mi to vyhodí chybu. Viz screen.
Děkuji za všechny návrhy a omlouvám se za hloupý dotaz.

 
Odpovědět
2.12.2016 10:34
Avatar
Odpovídá na Marek Richtár
Erik Šťastný:2.12.2016 10:47

Error v tomto případě znamená že indexuješ větší index než vůbec dané pole má

maximální index je vždy o 1 menší než je délka pole, protože indexy začínají od nuly :)

 
Nahoru Odpovědět
2.12.2016 10:47
Avatar
Petr Valigura
Tvůrce
Avatar
Petr Valigura:2.12.2016 10:54

Přistupuješ mimo rozsah řetězce, dejme tomu, že string "koláč" má délku 5. A tvůj cyklus je postaven tak, že jde od největšího k nule (k nule se nikdy nedostane). Jistě víš jak funguje indexování v poli a řetězcích

s[0] = 'k';
s[1] = 'o';
s[2] = 'l';
s[3] = 'á';
s[4] = 'č';

to co děláš ty, je že přistupuješ na pátý index. cislo1.Length ti vrací 5, protože délka je opravdu 5, jen pátý prvek je ve skutečnosti čtvrtý, když se čísluje od nuly. Takže změň for cyklus na:

for (int i = 0; i < cislo1.Length; i++)

// a nebo

for (int i = (cislo1.Length - 1); i >= 0; i--)

Edit: Vidím, že odpověď už jsi dostal. Ale tak co, aspoň jsem to rozepsal :D

Editováno 2.12.2016 10:55
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
2.12.2016 10:54
Občas je to tady dobrá klauniáda...
Avatar
Odpovídá na Marek Richtár
Marek Richtár:2.12.2016 10:58

Ahoj, děkuji všem.
Vyřešeno :)

 
Nahoru Odpovědět
2.12.2016 10:58
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 4 zpráv z 4.