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

Java - Scanner błędne działąnie

Object Storage Arubacloud
0 głosów
501 wizyt
pytanie zadane 13 lipca 2018 w Java przez pionas0407 Gaduła (4,620 p.)

Witam,

Zacząłem wczoraj naukę języka Java. Mam kupione dwie książki oraz przerabiam poradniki video od użytkownika Samuraj Programowania.

W jednym z jego video tutoriali zadał on pracę domową która jak zwykle postanowiłem rozwiązać.

Teść zadania: 

 

5. Pobierz od użytkownika dowolny tekst, następnie pobierz liczbę. Następnie spytaj, czy wydrukować dany tekst. W zależności od odpowiedzi, 1 oznacza tak, 2 oznacza nie, wykonaj zadanie , tzn. wydrukuj tyle razy, jaką liczbę podał użytkownik. Jeśli użytkownik wpisze coś innego niż 1 lub 2, wypisz „nie zrozumiałem, wybierz odpowiedź jeszcze raz”.

Mój kod:

//5. Pobierz od użytkownika dowolny tekst, następnie pobierz liczbę.
// Następnie spytaj, czy wydrukować dany tekst.
// W zależności od odpowiedzi, 1 oznacza tak, 2 oznacza nie, wykonaj zadanie
// , tzn. wydrukuj tyle razy, jaką liczbę podał użytkownik.
// Jeśli użytkownik wpisze coś innego niż 1 lub 2, wypisz „nie zrozumiałem, wybierz odpowiedź jeszcze raz”.

import java.util.Scanner;

public class Zadanie5 {
    public static void main(String[] args) {
        String text;
        int number;
        int choice;

        System.out.println("Welcome in my secound app!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter your text here:");
        text = scanner.next();
        System.out.println("Enter numer:");
        number = scanner.nextInt();


        for(int i =0; i<9999; i++) {
            System.out.println("Do you want to generate your text?");
            System.out.println("1- Yes");
            System.out.println("2 - No");
            choice = scanner.nextInt();

            if (choice == 1) {
                for(int j =0; j<number; j++)
                    System.out.println(text);
            } else if (choice == 2) {
                System.out.println("Bye Bye!");
                break;
            } else
                System.out.println("The answerd is wrong, enter again: ");
        }
    }
}

 

Mój error:


Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Zadanie5.main(Zadanie5.java:20)

 

Jeżeli wpiszę jedno słowo to program działa. Czemu po wpisaniu zdania program się wywala. 

Pytanie brzmi:

Co jest nie tak? Czy jest to związane ze Stringiem, nie może on przechowywać więcej niż słowo? 

1 odpowiedź

+1 głos
odpowiedź 13 lipca 2018 przez plucins Stary wyjadacz (11,110 p.)
 System.out.println("Enter numer:");
 number = scanner.nextInt();


Tutaj spodziewasz się wprowadzenia liczby ( int ), czy faktycznie wprowadzasz wartość liczbową ?

komentarz 13 lipca 2018 przez pionas0407 Gaduła (4,620 p.)
Wprowadzam wartość liczbową.
komentarz 13 lipca 2018 przez plucins Stary wyjadacz (11,110 p.)

zmien text = scanner.next();

na text = scanner.nextLine();

komentarz 13 lipca 2018 przez pionas0407 Gaduła (4,620 p.)
Dzięki wielkie wszystko działa :D!!!!

Podobne pytania

0 głosów
1 odpowiedź 330 wizyt
pytanie zadane 30 sierpnia 2018 w Java przez michaljbjj Początkujący (460 p.)
0 głosów
1 odpowiedź 764 wizyt
pytanie zadane 21 lutego 2019 w Java przez Metarinda Użytkownik (740 p.)
0 głosów
0 odpowiedzi 824 wizyt
pytanie zadane 3 grudnia 2018 w Java przez MarioB Nowicjusz (120 p.)

92,568 zapytań

141,422 odpowiedzi

319,637 komentarzy

61,956 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!

...