Java 循环中的输入不匹配异常

Java 循环中的输入不匹配异常,java,inputmismatchexception,Java,Inputmismatchexception,我试图为我的问题找到一个解决办法,但在实践中找不到一个有效的办法。所以,如果你不确定你知道解决方案是什么,请不要回答。我真的需要具体的帮助 问题是,当我运行我的简单代码时——您可以选择一个数字,它就可以了,循环工作正常。当您选择0时,它也会工作(运行完成),但当您放置字母或任何字符串时,会出现问题。。。即使我尝试输入另一个值,异常也会不停地循环 另外,我需要在这里使用扫描器,所以请不要写关于读者等的内容-只是如何解决这个具体问题 干杯 以下是代码(仅主代码): 已编辑 你喜欢这样吗 public

我试图为我的问题找到一个解决办法,但在实践中找不到一个有效的办法。所以,如果你不确定你知道解决方案是什么,请不要回答。我真的需要具体的帮助

问题是,当我运行我的简单代码时——您可以选择一个数字,它就可以了,循环工作正常。当您选择0时,它也会工作(运行完成),但当您放置字母或任何字符串时,会出现问题。。。即使我尝试输入另一个值,异常也会不停地循环

另外,我需要在这里使用扫描器,所以请不要写关于读者等的内容-只是如何解决这个具体问题

干杯

以下是代码(仅主代码):


已编辑

你喜欢这样吗

public static void main(String[] args) {
        // TODO code application logic here
        Scanner sc = new Scanner(System.in);
        int dane = -1 ;

         boolean keepLooping;   //if you delete this works the same with same problem
    do  
    {    
        keepLooping = false;
        try
        {

                System.out.println("Pick a number:");
                dane = sc.nextInt();


        }catch (InputMismatchException e)
          {
              System.out.println("Your exception is: " + e);
              keepLooping = false;
              dane = sc.nextInt();
          }  
        System.out.println("Out from exception");

    }while ((dane != 0)||(keepLooping == true)&&(dane!=0));   

    }
试试这个:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int dane = -1 ;

     boolean keepLooping = true;   //if you delete this works the same with same problem
while(keepLooping && dane != 0)  
{    

    System.out.println("Pick a number:");
try
{ 

        dane = Integer.parseInt(sc.next());


}catch (NumberFormatException e)
  {
       keepLooping = true;
  }  
System.out.println("Out from exception");

}

问题是当你说-

dane=sc.nextInt()

在上面的一行中,如果您输入的不是一个数字,它将抛出一个异常输入不匹配。 让我们了解这条线的作用。实际上有两件事-

首先,sc.nextInt()读取一个整数,只有在成功完成此任务后,它才会将该整数值赋给变量dane。但是当读取一个整数时,它抛出了一个InputMismatchException,因此赋值从未发生,但dane有它的previos值,而不是扫描仪读取的新值,因此dane仍然不等于0。 所以循环还在继续


我希望它能有所帮助。

实际上,它的数字格式异常必须被捕获,而不是输入不匹配。阅读此文,您在哪里将Keeploping设置为true?如果
Keeploping
与问题无关,则不应出现在问题描述中。更重要的是,你的测试输入是什么?例外是什么?谢谢你的帮助,但它仍然像以前一样工作。处理异常后,它停止工作。我使用处理异常后的异常保持在循环中。例如:当我放入字符串后,应用程序应该返回异常并请求其他值。如果输入0,则它将停止,如果输入数字,则它将继续循环。运行:选择数字:1从异常中选择数字:s您的异常是:java.util.InputMismatchException生成成功(总时间:6秒)--仍然相同没有任何帮助。异常之后,它停止了。我需要从下一步返回循环的地方继续。它是我机器上的输出从异常中取出一个数字:从异常中取出一个数字:从异常中取出一个数字:从异常中取出一个数字:从异常中取出一个数字:从异常中取出一个数字:从异常中取出一个数字:我告诉过你这是数字格式异常,非输入不匹配异常。捕捉这一行dane=Integer.parseInt(sc.next());这一行确保您输入的任何内容都被解析为int,如果不能,它将抛出numberformatexeptioni
m很高兴您理解了这个“复杂”的代码。也许有什么解决办法?请不要把你的想法写在这里。我需要混凝土。如果您没有检查它或不确定-不要只写因为您可以;)之前选中了此选项-没有帮助不,它不工作。我所需要的就是在处理异常后选择另一个值-然后再次循环,如果字符串-异常,bask请求循环,如果0,则停止运行。我重新检查。现在看起来它引发了异常。Adis解决方案解决了我的问题,但感谢您的尝试;)
public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int dane = -1 ;

     boolean keepLooping = true;   //if you delete this works the same with same problem
while(keepLooping && dane != 0)  
{    

    System.out.println("Pick a number:");
try
{ 

        dane = Integer.parseInt(sc.next());


}catch (NumberFormatException e)
  {
       keepLooping = true;
  }  
System.out.println("Out from exception");

}