问题描述
写一个根据输入整数求和的程序,如果输入999则程序求和后结束,如果输入小数,则显示“输入数字格式不对,请重新输入”。下面的程序不能实现重新输入,请问该怎么修改:importjava.util.*;classTest{inti;intsum=0;Scannerc=newScanner(System.in);intf(){do{System.out.println("请输入一个整数:");i=c.nextInt();sum=sum+i;}while(i!=999);returnsum;}}classSum{publicstaticvoidmain(String[]args){Testt=newTest();inttotal=0;try{total=t.f();System.out.println("和等于"+total);}catch(InputMismatchExceptione){System.out.println("你好,你输入的数值是非整数,请重新输入");}}}
解决方案
解决方案二:
publicstaticvoidmain(String[]args){Testt=newTest();inttotal=0;while(true){try{total=t.f();System.out.println("和等于"+total);break;}catch(InputMismatchExceptione){System.out.println("你好,你输入的数值是非整数,请重新输入");}}}
解决方案三:
楼上方法可行!也可以把输入写成一个方法,捕获异常,递归调用改方法//checkinputpublicstaticintuserInput(){Scannerconsole=newScanner(System.in);intkey=0;try{key=console.nextInt(16);if(key>15){//连续输入2个字符,会相加System.out.println("输入错误,请重新输入:");key=userInput();}}catch(Exceptione){System.out.println("输入错误,请重新输入:");key=userInput();}returnkey;}
解决方案四:
引用1楼wangfeiwoyun的回复:
Javacodepublicstaticvoidmain(String[]args){Testt=newTest();inttotal=0;while(true){try{……
这样不行,如果输入为小数时,会一直不断的提示"你好,你输入的数值是非整数,请重新输入"
解决方案五:
引用3楼sunrisefe的回复:
引用1楼wangfeiwoyun的回复:Javacodepublicstaticvoidmain(String[]args){Testt=newTest();inttotal=0;while(true){try{……这样不行,如果输入为小数时,会一直不断的提示"你好,你输入的数值是非整数,请重新输入"……
楼主你没看到你catch语句里只有打印一句话:你输入的数值是非整数,请重新输入吗?你自己要在后面在写个输入的方法呀要不然捕获异常后打印一句话就停止了的