今天早上作为我在Uni的Java课程练习,我不得不编写一个小程序来要求用户输入一些细节,然后再打印回来。我已经写完了,但是我一路上遇到了一个奇怪的问题。为什么这个Java程序的第17行没有被执行?
见下面的代码:
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:
,但用户没有机会输入信息,就好像该行代码已被注释掉一样。没有错误被抛出。输出看起来像这样:
帐户ID:
帐户名:
账户余额:
然而,如果切换线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行,但不是第2行?
如果它有某种相关性,我使用的是JDK 6 Update 18和TextPad 5.3.1。
谢谢,这清除了它。我应该首先提到文档。 – Auguste 2010-03-10 07:33:41
@Auguste你住,你学习!尝试做功课并提出一个合理的问题+1! – Kiril 2010-03-10 08:18:39