Scanner.next()循环接收多个单词

时间:2019-03-15 06:12:33

标签: java while-loop java.util.scanner user-input

我正在用Java类制作游戏,并且试图问用户他们想玩什么样的难度。但是,似乎IN.next()占用了多个单词,因为它处于循环中。我如何只用第一个单词呢?

public int configureDifficulty() {      
    String level = "1";
    println("At what difficulty would you like to play at?");
    println("Type 1 for easy, 2 for medium, 3 for hard.");

    while (true) {

        level = IN.next();
        try {
            return Integer.parseInt(level);
        }
        catch (NumberFormatException ex) {
            println("Try again");
        }
    }
}

控制台

At what difficulty would you like to play at?
Type 1 for easy, 2 for medium, 3 for hard. 
test test test test test
Try again
Try again
Try again
Try again
Try again

即使用户键入多个单词,如何使我的程序仅打印“重试”一行?

3 个答案:

答案 0 :(得分:0)

如果要照顾在同一行上键入的单词,则必须在扫描器中使用nextLine方法。该方法将返回一个字符串,然后您必须解析并编写逻辑。

答案 1 :(得分:0)

您可以使用nextLine的{​​{1}}方法将输入读取为Scanner,然后根据需要将其转换。您可以执行以下操作。

String

答案 2 :(得分:0)

您想要读取的是一个整数import java.util.*; class GFG { public static void main (String[] args) { int d = configureDifficulty(); System.out.println(d); } public static int configureDifficulty() { String level = "1"; System.out.println("At what difficulty would you like to play at?"); System.out.println("Type 1 for easy, 2 for medium, 3 for hard."); Scanner in = new Scanner(System.in); while (true) { level = in.nextLine(); try { return Integer.parseInt(level); } catch (NumberFormatException ex) { System.out.println("Try again"); } } } } 来确定难度,因此我建议您使用(1,2 or 3),以便您无需进行解析以及多余的scanner.nextInt()块。

此外,您还没有给出完整的代码(try-catch对象如何在其他地方初始化和使用),但是无论您给出的是什么,我都没有看到scanner消耗了多个代码字符。如果可以,并且您不想将其替换为next(),请改用scanner.nextInt()。希望这会有所帮助

scanner.nextLine()