jsa*_*san 4 java java.util.scanner
这是我的代码
Scanner keyboard = new Scanner(System.in);
System.out.print("Last name: ");
lastName = keyboard.nextLine();
System.out.print("First name: ");
firstName = keyboard.nextLine();
System.out.print("Email address: ");
emailAddress = keyboard.nextLine();
System.out.print("Username: ");
username = keyboard.nextLine();
Run Code Online (Sandbox Code Playgroud)
它输出这个
Last name: First name:
Run Code Online (Sandbox Code Playgroud)
基本上它跳过让我进入lastName并直接进入提示firstName.
但是,如果我使用keyboard.next()而不是keyboard.nextLine(),它工作正常.有什么想法吗?
让我猜一下 - 你没有显示使用上面尝试获取lastName的扫描器的代码.在那次尝试中,你没有处理行尾令牌,所以它就是悬空,只是被nextLine()你试图获得的地方所吞噬lastName.
例如,如果你有这个:
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = keyboard.nextInt(); // dangling EOL token here
System.out.print("Last name: ");
lastName = keyboard.nextLine();
Run Code Online (Sandbox Code Playgroud)
你会遇到问题.
一个解决方案,每当你离开EOL令牌悬空时,通过调用吞下它keyboard.nextLine().
例如,
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = keyboard.nextInt();
keyboard.nextLine(); // **** add this to swallow EOL token
System.out.print("Last name: ");
lastName = keyboard.nextLine();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5817 次 |
| 最近记录: |