当前位置: 首页 > 知识库问答 >
问题:

尝试在while循环中使用Try-catch,直到用户正确回答而不输入无效数据(Java)

徐正雅
2023-03-14

我试图创建一个程序,要求用户猜测一个随机生成的数字,当输入正确时循环退出。我还试图阻止用户输入无效数据,并希望循环重复,直到用户输入有效数据。问题是当输入字母表时,程序会重复。谢谢你提前帮忙。我用的是eclipse开普勒

输出:
尝试猜测数字:k您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次猜测数字:您输入了无效数据。请再次尝试猜测数字:

while(true){
         try{
            System.out.println("Try guessing the number: ");
            guess=input.nextInt();
            if(guess==sum){
                System.out.println("You have guessed it correctly");
                break;
            }
        }catch(InputMismatchException e){
            System.out.println("You have entered invalid data. Please try again");
        }
       }

共有2个答案

陆阳曜
2023-03-14

这对我有用。。。它修复了while(true)问题,并使用一种更简单的方法来检查更容易调试的错误数据!祝你玩得开心,好运!

        String guessString="";
        int guess = 0;
        Scanner input = new Scanner(System.in);
        int sum = 12;
        //just used 12 as a placeholder, you'll have to connect your 
        //random number generator, as well as changing the default of 
        //guess=0 if 0 is in your range for the random number

        while(sum!=guess){

            System.out.println("Try guessing the number: ");
            guessString=input.next();
            try {
                guess = Integer.parseInt(guessString);
            } catch(Exception e) {
                System.out.println("Invalid Data.");
                guess=0;
            }

        }
        System.out.println("You have guessed it correctly");
子车轶
2023-03-14

您不必使用try/cathc结构。一段时间就够了

while(true){
 System.out.println("Try guessing the number: ");
            guess=input.nextInt();

if(guess==sum){
                System.out.println("You have guessed it correctly");
                break;
            }
if(!(guess instanceof Int)){
System.out.println("You have entered invalid data. Please try again");

}


}
 类似资料:
  • 大家好。这是我学习编程的第五周。我应该创建一个程序,让用户三次尝试输入一个有效的值。如果第三次尝试的值无效(负数),那么它将提示错误消息并终止。 问题是我可以输入两个无效值,后跟一个有效值,但它仍然会给出错误消息并终止。程序应计算第三个有效值并进行数学运算,然后打印转换。 例如: 你想把多少英里换成公里?-1 不能输入负值! 输入正确的英里数:-1 不能输入负值! 输入正确的英里数:5 错误:不能

  • 问题内容: 当我在 while循环中 使用 try和catch 块时,我的程序有一个无限 循环 。 当我输入一个整数时,它运行良好并要求另一个输入,但是当我输入一个字符时,它将进入无穷循环。为什么会这样呢? 问题答案: 遇到无效输入时,由于nextInt()不使用无效令牌,因此程序进入无限循环。因此,导致该异常的任何令牌都将保留在该位置,并在下次尝试使用nextInt()时继续引发异常。 可以通过

  • 下面的代码询问用户他/她想要多少个赛车手。

  • 问题内容: 我试图让用户有机会在引入会产生错误但又无法正常工作的东西之后重复输入,因为一旦发现 错误, 就不会再次执行try东西,而是直接进入catch东西,生成一个永恒的东西。柱。这是我的代码: 问题答案: 输入非整数时,对的调用不会消耗非整数。您需要致电(或)使用它。就像是,

  • 问题内容: 我试图让用户有机会在引入会产生错误但又无法正常工作的东西之后重复输入,因为一旦发现 错误, 就不会再次执行try东西,而是直接进入catch东西,生成一个永恒的东西。柱。这是我的代码: 问题答案: 输入非整数时,对的调用不会消耗非整数。您需要致电(或)使用它。就像是,

  • 问题内容: 我试图确保用户输入是整数,但是当我使用下面的代码时,我只会得到语句的无限循环。关于如何改进的任何建议? 问题答案: 不会消耗无效的输入,因此它将反复尝试读取相同的无效值。要解决此问题,您需要通过调用或接受任何值来显式使用它。 顺便说一句,为使您的代码更整洁并避免昂贵的操作(如创建异常),您应使用。 这是组织代码的方法