Jako ćwiczenie na kurs języka Java w Uni dziś rano musiałem napisać mały program, aby poprosić użytkownika o wprowadzenie pewnych szczegółów, a następnie wydrukować je. Od tego czasu skończyłem pisać, ale po drodze natknąłem się na dziwny problem.Dlaczego linia 17 tego programu Java nie jest wykonywana?
Zobacz poniższy kod:
import java.util.Scanner;
public class Scanner_Exercise
{
public static void main (String[] args)
{
Scanner keyboardIn = new Scanner(System.in);
int accountId;
String accountName;
float accountBalance;
System.out.println("Account ID: "); //Line 13
accountId = keyboardIn.nextInt(); //Line 14
System.out.println("Account name: "); //Line 16
accountName = keyboardIn.nextLine(); //Line 17
System.out.println("Account balance: ");
accountBalance = keyboardIn.nextFloat();
}
}
Gdy ten program działa, linia 17 (patrz komentarze) są pomijane; Account name:
jest drukowany, ale użytkownik nie ma możliwości wprowadzenia informacji, tak jakby ten wiersz kodu został skomentowany. Żadne błędy nie są zgłaszane. Wyjście wygląda następująco: ID
konta:
nazwa konta:
bilans konta:
Jeśli jednak przełączyć linie 13 i 14 z 16 i 17, jak równie następuje, program działa poprawnie, a żadne wiersze nie są pomijane.
System.out.println("Account name: "); //Line 16
accountName = keyboardIn.nextLine(); //Line 17
System.out.println("Account ID: "); //Line 13
accountId = keyboardIn.nextInt(); //Line 14
Dlaczego linia 17 jest pomijana w pierwszym przypadku, ale nie druga?
Jeśli jest to istotne, używam aktualizacji JDK 6 Update 18 oraz TextPad 5.3.1.
Dzięki, że to wyczyści. Powinienem był odnieść się do dokumentacji. – Auguste
@Auguste żyjesz i się uczysz! +1 za próbowanie odrabiania zadań domowych i zadawanie rozsądnych pytań! – Kiril