Nauč se s námi víc. Využij 50% bonus na e-learningové kurzy.
Pouze tento týden sleva až 80 % na e-learning týkající se Javy
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
vita
Redaktor
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.