【Java】异常处理练习题所遇到的错误
2016-12-17 21:21
423 查看
异常处理练习题所遇到的错误
问题:try catch 在一个包含输入的循环里,catch语句块无限循环执行。
一切源于这道题
数字格式异常
编写一个程序,提示用户读取两个整数,然后显示他们的和。程序应该在输入不正确时提示用户再次输入数字。输入格式:
i 9 (第1次输入) l 8 (第2次输入) 5 6 (第3次输入)
输出格式:
Incorrect input and re-enter two integers: (第1次输出提示) Incorrect input and re-enter two integers: (第2次输出提示) Sum is 11 (输出结果)
输入样例:
i 9 l 8 5 6
输出样例:
Incorrect input and re-enter two integers: Incorrect input and re-enter two integers: Sum is 11
我的思路是这样的:
首先,这个程序应该是应该死循环while(true){...}
输入和输出都写在
try块里
如果两个整数都输入正确则输出结果,
break跳出循环
catch块里输出错误提示,然后
continue让程序继续执行
于是有了下面的程序:
import java.util.Scanner; import java.io.IOException; import java.text.DecimalFormat; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int a,b; while(true){ try{ a=in.nextInt(); b=in.nextInt(); System.out.println("Sum is "+(a+b)); break; }catch(java.util.InputMismatchException e){ System.out.println("Incorrect input and re-enter two integers:"); continue; } } } }
但是程序并没有像预想的一样正常执行,运行结果如下:
catch语句块的内容循环输出,思考了一下,凭借之前C语言编程的经验,应该是输入流中的内容没有被取走,从而导致循环获取,循环抛异常,catch块循环执行。
解决办法:
JAVA中没有C语言中的fflush()方法,但是依然很容易解决,在上面的程序中,多加一行
in.nextLine()就可以达到效果,使程序正常运行。
最终的代码:
import java.util.Scanner; import java.io.IOException; import java.text.DecimalFormat; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int a,b; while(true){ try{ a=in.nextInt(); b=in.nextInt(); System.out.println("Sum is "+(a+b)); break; }catch(java.util.InputMismatchException e){ System.out.println("Incorrect input and re-enter two integers:"); in.nextLine(); continue; } } } }
相关文章推荐
- 用异常来处理错误----第一节 Java异常的概念
- java错误异常处理
- 黑马程序员_日记7_Java错误、异常及其处理
- ONLINE方式在线重建索引异常中断后遇到ORA-08104错误的处理思路
- Thinking in Java第三版读书笔记-第九章:异常带来处理错误
- java程序由mysql转到sqlserver时在浮点数处理上遇到的错误
- Java Web 错误/异常处理页面
- Java学习-12.通过异常处理错误
- java程序错误类型及异常处理
- 一天一个Java基础——通过异常处理错误
- Java软件低级错误(六):字符串转数字时未进行异常处理
- Java使用jmagick处理图片遇到的异常
- 深入探讨JAVA中的异常与错误处理
- 关于 用户回调期间遇到未经处理的异常(41d) 的错误
- Java 异常处理-常犯错误
- java错误异常处理时一定要处理抛出的异常
- Java的异常处理练习题
- Java软件低级错误:字符串转数字时未进行异常处理
- Java千百问_04异常处理(008)_java中常见的错误有哪些
- 用异常来处理错误----第一节 Java异常的概念