Pominięty "scanner"

0

Witam, jestem początkujący z javą, proszę o pomoc. Kod programu:

import java.util.Scanner;

public class Firma
{
    public static void main(String[] args)
    {
    System.out.println("Witaj w bazie pracowników");
    System.out.println();
    boolean wybrano=false;
    System.out.println("1. Wyświetlanie stanu bazy");
    System.out.println("2. Dodawanie pracownika do bazy");
        while (!wybrano)
        {
        Scanner odczyt = new Scanner(System.in);
        int wybor = odczyt.nextInt();
            switch (wybor)
            {
            case (1):
            System.out.println("Wybrano wyświetlenie stanu bazy");
            wybrano=true;
            break;
            case (2):
            System.out.println("Wybrano dodanie pracownika do bazy");
            System.out.print("Podaj imie pracownika: ");
            String imie = odczyt.nextLine();
            System.out.println();
            System.out.print("Podaj nazwisko pracownika: ");
            String nazwisko = odczyt.nextLine();
            System.out.println(nazwisko);
            System.out.print("Podaj wiek pracownika: ");
            int wiek = odczyt.nextInt();
            System.out.println();
            Pracownik pracownik1 = new Pracownik(imie, nazwisko, wiek);
            pracownik1.getImie();
            pracownik1.getNazwisko();
            pracownik1.getWiek();
            wybrano=true;
            break;
            default:
            System.out.println("Napisz odpowiednią cyfrę");
            System.out.println();
            }
        }
    }
} 

Problem jest taki że wynikiem uruchomienia programu (z wybraniem opcji DODANIE PRACOWNIKA) jest wypisanie na ekranie "Podaj imię pracownika: " ale nie włącza się scanner co do imienia. Z nazwiskiem następnym w kolejce jest już wszystko ok. Proszę o pomoc. :)

0

Zdaje się że jest dopuszczalny ale nie potrzebny (usunąłem). :D To jednak problemu nie osunęło.

1

Zmień nextLine() na next(), lub użyj różnych scannerów do różnych typów danych (nie polecam). Mógłby jednak ktoś mi wytłumaczyć dlaczego tak jest? W C++ jest czyszczenie bufora, tutaj nie znalazłem funkcji w klasie Scanner o podobnym zastosowaniu.

0

Dzięki ci dobry człowieku xD bez "Line" działa

0
int i = odczyt.nextInt();
String s = odczyt.nextLine();
String imie = odczyt.nextLine();

po wprowadzeniu danych:

1abcdef
Piotr

wynikiem będzie przypisanie:
i = 1
s = "abcdef"
imie = "Piotr"

1 użytkowników online, w tym zalogowanych: 0, gości: 1