Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:

Ahoj, mám dotaz ohledně načítání Integeru ve smyčce.
Mám program který má jakési menu a podle něj se vykonává kód:

while(c = sc.nextInt()) !=0) {
            switch(c) {
                case 1:
                    //code
                break;
                case 0:
                    //pryč ze smyčky
                break;
                default:
                    //code
                break;
            }
        }

Uživatel nemusí být příliš chytrý, tudíž tam může zadat nějaký String, v tom případě by se nabízelo celou smyčku do try bloku a zachytávat výjimku, ale to bych pak zase musel volat ten while cyklus. Je toto použití dobré nebo by bylo třeba lepší načítat string, zkusit parsovat na int a pak větvit program? U tohodle použití mi pak není jasné jak by měla vypadat správně podmínka cyklu. Díky

 
Odpovědět 18.5.2015 16:27
Avatar
vita
Redaktor
Avatar
vita:

Ahoj,
nevím zde je tvoje otázka stále aktuální, ale zde je jedno z možných řešení:

public class MyApp {
        private static Scanner scanner = new Scanner(System.in);

        public static void main(String[] args) {

                String vstup = null;
                boolean pokracovat = true;

                do {
                        System.out.print("Zadej celé číslo v rozsahu " + Integer.MIN_VALUE + " až " + Integer.MAX_VALUE + ": ");
                        vstup = scanner.next();
                        try {
                                int cislo = Integer.parseInt(vstup);
                                switch (cislo) {
                                        case 0:
                                                System.out.println("Zadal jsi číslo 0, program bude ukončen");
                                                pokracovat = false;
                                                break;
                                        case 1:
                                                System.out.println("Zadal jsi číslo 1");
                                                break;
                                        default:
                                                System.out.println("Zadal jsi jiné číslo než 0 nebo 1");
                                }
                        } catch (Exception e) {
                                System.out.println("Chybný vstup!");
                        }
                } while (pokracovat);

                System.out.println("Program skončil.");
        }
}

Výstup:

Zadej celé číslo v rozsahu -21474836482147483647: 17
Zadal jsi jiné číslo než 0 nebo 1
Zadej celé číslo v rozsahu -21474836482147483647: -123
Zadal jsi jiné číslo než 0 nebo 1
Zadej celé číslo v rozsahu -21474836482147483647: 1
Zadal jsi číslo 1
Zadej celé číslo v rozsahu -21474836482147483647: abcd
Chybný vstup!
Zadej celé číslo v rozsahu -21474836482147483647: 9999999999999999999999999999
Chybný vstup!
Zadej celé číslo v rozsahu -21474836482147483647: 0
Zadal jsi číslo 0, program bude ukončen
Program skončil.
 
Nahoru Odpovědět 28.8.2015 14:09
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 2 zpráv z 2.