Java 循环中的输入不匹配异常
我试图为我的问题找到一个解决办法,但在实践中找不到一个有效的办法。所以,如果你不确定你知道解决方案是什么,请不要回答。我真的需要具体的帮助 问题是,当我运行我的简单代码时——您可以选择一个数字,它就可以了,循环工作正常。当您选择0时,它也会工作(运行完成),但当您放置字母或任何字符串时,会出现问题。。。即使我尝试输入另一个值,异常也会不停地循环 另外,我需要在这里使用扫描器,所以请不要写关于读者等的内容-只是如何解决这个具体问题 干杯 以下是代码(仅主代码):Java 循环中的输入不匹配异常,java,inputmismatchexception,Java,Inputmismatchexception,我试图为我的问题找到一个解决办法,但在实践中找不到一个有效的办法。所以,如果你不确定你知道解决方案是什么,请不要回答。我真的需要具体的帮助 问题是,当我运行我的简单代码时——您可以选择一个数字,它就可以了,循环工作正常。当您选择0时,它也会工作(运行完成),但当您放置字母或任何字符串时,会出现问题。。。即使我尝试输入另一个值,异常也会不停地循环 另外,我需要在这里使用扫描器,所以请不要写关于读者等的内容-只是如何解决这个具体问题 干杯 以下是代码(仅主代码): 已编辑 你喜欢这样吗 public
已编辑 你喜欢这样吗
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,如果不能,它将抛出numberformatexeptionim很高兴您理解了这个“复杂”的代码。也许有什么解决办法?请不要把你的想法写在这里。我需要混凝土。如果您没有检查它或不确定-不要只写因为您可以;)之前选中了此选项-没有帮助不,它不工作。我所需要的就是在处理异常后选择另一个值-然后再次循环,如果字符串-异常,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");
}