• 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

VPS Starter Arubacloud
0 głosów
643 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ź 351 wizyt
pytanie zadane 30 sierpnia 2018 w Java przez michaljbjj Początkujący (460 p.)
0 głosów
1 odpowiedź 800 wizyt
pytanie zadane 21 lutego 2019 w Java przez Metarinda Użytkownik (740 p.)
0 głosów
0 odpowiedzi 933 wizyt
pytanie zadane 3 grudnia 2018 w Java przez MarioB Nowicjusz (120 p.)

93,032 zapytań

141,996 odpowiedzi

321,300 komentarzy

62,379 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!

...