我正在用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
即使用户键入多个单词,如何使我的程序仅打印“重试”一行?
答案 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()