Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Využij akce až 80 % zdarma při nákupu e-learningu - více informací. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Swift
discount week 80
Avatar
Honza
Člen
Avatar
Honza:14. dubna 18:57

Ahoj, měl bych dotaz, proč v následujícím kódu se při opětovném spuštění toho do-while cyklu nevypíše okno se zadáváním do proměnné "text" ? Ale v další variantě toho kódu zase nejde zadávat do proměnné "pokracovat" ? Vím, že je to docela blbá otázka, ale přišlo mi to zajímavé. :-D

public static void main(String[] args) {

                Scanner sc = new Scanner(System.in);

        boolean pokracovat = false;
        String text;
        int cislo;
        do{
                 System.out.print("zadej text: ");
             text = sc.nextLine();
             System.out.println(text);

            System.out.print("zadej číslo: ");
           cislo = sc.nextInt();
           System.out.println(cislo);



           System.out.print("Znovu");
           int znovu = sc.nextInt();
           if(znovu == 1){
           pokracovat = true;
           }else {
           pokracovat = false;
           }
        }while(pokracovat);

                sc.close();

        }
public static void main(String[] args) {

                Scanner sc = new Scanner(System.in);

                String pokracovat;
        String text;
        int cislo;

        do{

                 System.out.println("zadej text: ");
             text = sc.nextLine();
             System.out.println(text);

             System.out.println("zadej číslo: ");
             cislo = sc.nextInt();
             System.out.println(cislo);

           System.out.println("Znovu");
           pokracovat = sc.nextLine();

        }while(pokracovat.equals("ano"));

                sc.close();

        }
 
Odpovědět
14. dubna 18:57
Avatar
Petr Štechmüller
Překladatel
Avatar
Odpovídá na Honza
Petr Štechmüller:14. dubna 19:16

Ahoj,

na to ti odpovím odkazem.

Jde právě o použití metody nextInt, která "nepožere" odřádkování ze vstupu. Takže řešení jsou dvě:

  1. Použij Integer.parse­Int(sc.nextLi­ne())
  2. Nebo za každé načtení čísla vlož opět sc.nextLine(). Tím se přečte to odřádkování a můžeš veselé načítat další vstup.
Editováno 14. dubna 19:16
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
14. dubna 19:16
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Honza
Člen
Avatar
Odpovídá na Petr Štechmüller
Honza:14. dubna 20:25

Děkuji už to chápu :-)

 
Nahoru Odpovědět
14. dubna 20:25
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 3 zpráv z 3.