Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
relycanx
Člen
Avatar
relycanx:30.3.2014 17:59

Ahoj, v minulosti, když jsem se učil C#, tak se tam daly krásně ošetřovat proměnné dvěma řádky, kde uživatel musel např. zadat číslo, jinak byl spuštěn cyklus, dokud se tak nestalo (mluvím o článku č. 7, v základních konstrukcích jazyka C#). Na netu jsem našel jen tento způsob níže, který mi ani správně nefunguje - po prvním pokusu program již nepřijímá vstup a aplikace se zacyklí. V čem je prosím problém? Dají se vstupy ošetřit i nějakým lepším způsobem, stejně jako u C#? Děkuji.

Scanner sc = new Scanner(System.in);
int cislo;
boolean omyl = true;

while(omyl == true)
{
     System.out.println("Zadejte číslo");

     try
     {
          cislo = sc.nextInt();
          omyl = false;
     }
     catch(Exception e)
     {
          System.out.println("Zadávejte pouze čísla!");
     }
}
Editováno 30.3.2014 18:00
 
Odpovědět
30.3.2014 17:59
Avatar
adder
Člen
Avatar
Odpovídá na relycanx
adder:30.3.2014 18:26

Problém je podle mě v tom, že do čísla se ulože např 'e' a try blok se ani nevyvolá.

Scanner sc = new Scanner(System.in, "windows-1250");

        int cislo;
        boolean omyl = false;

    while(omyl != true)
        {

             System.out.println("Zadejte číslo");
             String c = sc.nextLine();
             try
             {
                  cislo = Integer.parseInt(c);
                  omyl = true;
             }
             catch(Exception e)
             {
                  System.out.println("Zadávejte pouze čísla!");
             }
        }

Zkusil jsem tohle a funguje to. :)

Nahoru Odpovědět
30.3.2014 18:26
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
relycanx
Člen
Avatar
Odpovídá na adder
relycanx:30.3.2014 19:15

aha, takže se to nejdřív musí přeparsovat přes další proměnnou? tak to pak jo, dík. ach jo, takových problémů s jedním ošetřením. to bude boj, až tam bude víc vstupů najednou :/

 
Nahoru Odpovědět
30.3.2014 19:15
Avatar
adder
Člen
Avatar
adder:30.3.2014 21:05

nejspíš ano. to uděláš do metody, kterou budeš potom používat a půjde to v pohodě. :)

Nahoru Odpovědět
30.3.2014 21:05
I’m going to lay this brick as perfectly as a brick can be laid.
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.