• 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

Object Storage Arubacloud
0 głosów
187 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 (269,710 p.)
Sformatuj kod poprawnie.

Podobne pytania

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

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...