Using scanner.nextLine()
尝试使用java.util.Scanner中的nextLine()方法时遇到了麻烦。
这是我尝试过的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import java.util.Scanner; class TestRevised { public void menu() { Scanner scanner = new Scanner(System.in); System.out.print("Enter a sentence:\t"); String sentence = scanner.nextLine(); System.out.print("Enter an index:\t"); int index = scanner.nextInt(); System.out.println(" Your sentence:\t" + sentence); System.out.println("Your index:\t" + index); } } |
示例#1:此示例按预期工作。 在继续
这会产生输出:
1 2 3 4 5 | Enter a sentence: Hello. Enter an index: 0 Your sentence: Hello. Your index: 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // Example #2 import java.util.Scanner; class Test { public void menu() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println(" Menu Options "); System.out.println("(1) - do this"); System.out.println("(2) - quit"); System.out.print("Please enter your selection:\t"); int selection = scanner.nextInt(); if (selection == 1) { System.out.print("Enter a sentence:\t"); String sentence = scanner.nextLine(); System.out.print("Enter an index:\t"); int index = scanner.nextInt(); System.out.println(" Your sentence:\t" + sentence); System.out.println("Your index:\t" + index); } else if (selection == 2) { break; } } } } |
示例#2:此示例无法按预期工作。 此示例使用while循环和if - else结构允许用户选择要执行的操作。 程序到达
这会产生输出:
1 2 3 4 5 6 7 | Menu Options (1) - do this (2) - quit Please enter your selection: 1 Enter a sentence: Enter an index: |
这使得无法输入句子。
为什么示例#2不能按预期工作? Ex之间的唯一区别。 1和2是Ex。 2有一个while循环和一个if-else结构。 我不明白为什么这会影响scanner.nextInt()的行为。
我认为你的问题是这样的
1 | int selection = scanner.nextInt(); |
只读取数字,而不是数字后面的行尾或任何内容。当你申报时
1 |
这将读取该行的剩余部分(在我怀疑的数字之后没有任何内容)
尝试放置scanner.nextLine();在每个nextInt()之后,如果你打算忽略该行的其余部分。
而不是每次想要读取一些额外的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.util.Scanner; class ScannerTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); scanner.useDelimiter("\ "); System.out.print("Enter an index:"); int index = scanner.nextInt(); System.out.print("Enter a sentence:"); String sentence = scanner.next(); System.out.println(" Your sentence:" + sentence); System.out.println("Your index:" + index); } } |
因此,要读取一行输入,您只需要
与"nextLine()每次"方法的区别在于,后者将接受,作为索引
这是因为当你输入一个数字然后按Enter键时,
提示:使用
不要尝试使用nextLine()扫描文本;在使用相同扫描仪的nextInt()之后!它与Java Scanner不兼容,许多Java开发人员选择仅使用另一个Scanner进行整数。如果需要,您可以将这些扫描仪称为scan1和scan2。
要么
1 |