В качестве упражнения для моего курса Java в Uni этим утром мне пришлось написать небольшую программу, чтобы попросить пользователя ввести некоторые детали, а затем распечатать их. С тех пор я закончил писать, но по пути столкнулся со странной проблемой.
См. Код ниже:
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();
}
}
При запуске этой программы строка 17 (см. Комментарии) пропускается; Account name:
печатается, но пользователю не предоставляется возможность ввести информацию, как если бы эта строка кода была закомментирована. Ошибки не выбрасываются. Вывод выглядит так:
Идентификатор аккаунта:
2
Имя учетной записи:
Баланс счета:
Однако, если я переключаю строки 13 и 14 на 16 и 17, как показано ниже, программа работает нормально, и строки не пропускаются.
System.out.println("Account name: "); //Line 16
accountName = keyboardIn.nextLine(); //Line 17
System.out.println("Account ID: "); //Line 13
accountId = keyboardIn.nextInt(); //Line 14
Почему строка 17 пропускается в первом случае, а не во втором?
Если это как-то актуально, я использую JDK 6 Update 18 и TextPad 5.3.1.