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不能按预期工作?唯一之间的区别。12是那个 2具有while循环和if-else结构。我不明白为什么这会影响Scanner.nextInt()的行为。

回答:

我想你的问题是

int selection = scanner.nextInt();

仅读取数字,而不读取行尾或数字之后的任何内容。当你声明

String sentence = scanner.nextLine();

这将读取行的其余部分及其上的数字(我怀疑该数字之后没有任何内容)

尝试放置一个扫描仪。如果你打算忽略该行的其余部分,则在每个nextInt()之后。

以上是 Java使用scanner.nextLine() 的全部内容, 来源链接: utcz.com/qa/418213.html

回到顶部