• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java problem z pętla while

VPS Starter Arubacloud
0 głosów
208 wizyt
pytanie zadane 10 marca 2018 w Java przez dskibotic Nowicjusz (170 p.)
edycja 10 marca 2018 przez dskibotic

Witam,

Dopiero co zaczynam przygodę z java. Mam problem z pętlą while, pierwszy raz wykonuje się dobrze, natomiast drugi raz wyskakuje mi jakiś błąd i pętla się zacina.

Kod:

canner odczyt = new Scanner(System.in);
               
                System.out.println("Program wyślwietla ilosc gwiazdek podana przez uzytkownika");
                  String gw = null;
                  int gw1 = 0;
                  char q;
                while(true)
                {
                  System.out.println("Podaj ilosc gwiazdek");
                  gw = odczyt.nextLine();
                  System.out.println("Wybierz czym maja byc gwiazki");
                  q = odczyt.next().trim().charAt(0);
                    if(!gw.matches("-?\\d+"))
                      {
                          System.out.println("Niepoprawne dane!!\n\n");
                      }
                    else
                    {
                    System.out.println("Dane poprawne/n");
                    gw1 = Integer.parseInt(gw);
                    if(gw1<0){gw1 = gw1*(-1);}
                    for (int i = 1; i <= gw1; i++) {
                        System.out.print(q);
                    }
                    System.out.println("\n\n");
                }                
                }


Konsola:

Program wyślwietla ilosc gwiazdek podana przez uzytkownika
Podaj ilosc gwiazdek
5
Wybierz czym maja byc gwiazki
$
Dane poprawne

$$$$$

Podaj ilosc gwiazdek
Wybierz czym maja byc gwiazki
5
Niepoprawne dane!!

Podaj ilosc gwiazdek
Wybierz czym maja byc gwiazki

 

komentarz 10 marca 2018 przez xenonso Mądrala (5,160 p.)
Dodaj kod w bloczek kodu, polecam

2 odpowiedzi

+1 głos
odpowiedź 10 marca 2018 przez xenonso Mądrala (5,160 p.)

Pod koniec pętli while daj odczyt.nextLine();

while (true) {
    //twój kod
             
       odczyt.nextLine();
}

 

komentarz 10 marca 2018 przez dskibotic Nowicjusz (170 p.)
Dziękuje, pomogło.

Tylko nie rozumiem dlaczego to tak działa, we wcześniejszych pętlach while nie musiałem podawać tego na końcu
1
komentarz 10 marca 2018 przez xenonso Mądrala (5,160 p.)
W dużym uproszczeniu, w taki sposób czyścisz bufor scannera i część problemów z nim związanych znika. Na tym etapie nauki raczej się o to nie martw.
0 głosów
odpowiedź 10 marca 2018 przez Wiciorny Ekspert (277,460 p.)
Sformatuj kod poprawnie.

Podobne pytania

0 głosów
1 odpowiedź 358 wizyt
pytanie zadane 20 października 2018 w Java przez mn130496 Gaduła (3,530 p.)
0 głosów
2 odpowiedzi 637 wizyt
pytanie zadane 18 lutego 2017 w Java przez Wolfy Nowicjusz (180 p.)
0 głosów
1 odpowiedź 179 wizyt
pytanie zadane 21 kwietnia 2018 w C i C++ przez newUser Użytkownik (520 p.)

92,980 zapytań

141,943 odpowiedzi

321,189 komentarzy

62,307 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...