Java使用scanner.nextLine()
尝试使用java.util.Scanner
中的nextLine()
方法时遇到麻烦。
这是我尝试过的:
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("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
}
示例1:此示例按预期方式工作。该行String sentence = scanner.nextLine()
;等待输入,然后再继续System.out.print("Enter an index:\t");
。
产生输出:
Enter a sentence: Hello.Enter an index: 0
Your sentence: Hello.
Your index: 0
// Example #2
import java.util.Scanner;
class Test {
public void menu() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\nMenu Options\n");
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("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
else if (selection == 2) {
break;
}
}
}
}
示例2:此示例无法正常工作。本示例使用while循环以及if-else
结构允许用户选择要执行的操作。一旦程序到达String sentence = scanner.nextLine()
;,它就不会等待输入,而是执行该行System.out.print("Enter an index:\t")
;。
产生输出:
Menu Options(1) - do this
(2) - quit
Please enter your selection: 1
Enter a sentence: Enter an index:
这使得不可能输入句子。
为什么示例2
不能按预期工作?唯一之间的区别。1
和2
是那个 2
具有while
循环和if-else
结构。我不明白为什么这会影响Scanner.nextInt()
的行为。
回答:
我想你的问题是
int selection = scanner.nextInt();
仅读取数字,而不读取行尾或数字之后的任何内容。当你声明
String sentence = scanner.nextLine();
这将读取行的其余部分及其上的数字(我怀疑该数字之后没有任何内容)
尝试放置一个扫描仪。如果你打算忽略该行的其余部分,则在每个nextInt()之后。
以上是 Java使用scanner.nextLine() 的全部内容, 来源链接: utcz.com/qa/418213.html