IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze: Scanner - načítání Integeru ve smyčce

Aktivity
Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:18.5.2015 16:27

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
Tvůrce
Avatar
vita:28.8.2015 14:09

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.