这是一款猜谜游戏。我想在错误信息后输入用户输入,但我的口号继续无限打印..请帮助我。 如果我输入信件,它将打印出来 “号码无效!再试一次。” “号码无效!再试一次。” “号码无效!再试一次。” “号码无效!请再试一次。”
import java.util.*;
public class RandomGame {
public static Scanner sc = new Scanner(System.in);
public static void main(String args[]) {
Random rand = new Random();
int x = rand.nextInt(50);
int counter = 0;
int y;
boolean flag = false;
System.out.print("Give a number from 1-50:");
while(!flag) {
flag = true;
try {
y = sc.nextInt();
if (y < x) {
counter++;
System.out.println("Too low. Try again");
flag = false;
} else if (y > x) {
counter++;
System.out.println("Too high. Try again");
flag = false;
} else if (x == y) {
counter++;
System.out.println("you got it " + counter + " attempt(s):");
flag = true;
}
} catch(InputMismatchException | NumberFormatException e1) {
System.out.println("Invalid Number! Try again.");
}
flag = false;
}
System.out.println(x);
}
}
答案 0 :(得分:2)
您的问题是nextInt
无法从流中删除有问题的字符,因此您会一遍又一遍地遇到相同的错误。
您最好拨打next
而不是nextInt
,然后尝试使用String
将生成的int
解析为Integer.parseInt
。这样,如果流的内容是非数字的,它实际上将从流中删除。
答案 1 :(得分:-1)
对于这类事情你也可以使用“finally”关闭,
try{}
catch(Exception e){}
finally{}
最终总是有效(即使没有任何异常),即使有任何异常 即使出现错误,它也可以帮助程序正常工作。