最佳答案
我在尝试使用 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就是那个 Ex。2有一个 while 循环和一个 if-else 结构。我不明白为什么这会影响 Scanner.nextInt ()的行为。