利用异常+nextLine()解决输入不匹配的问题

/**
* 利用异常+nextLine()解决输入不匹配的问题
*/

package java_eight;

import java.util.InputMismatchException;
import java.util.Scanner;

public class InputMismatchExceptionDemo {

public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    boolean continueInput=true;
    do{
        try{
            System.out.print("Enter two integers:");
            int number1=input.nextInt();
            int number2=input.nextInt();
            System.out.println("The sum is "+(number1+number2));
            continueInput=false;
        }catch(InputMismatchException ex){
            System.out.println("Try again:(Incorrect input:two integers are required)");

            /**
             * 此处的input.nextLine();是本程序的亮点,如果没有input.nextLine();
             * 当输入的两个数值不是整数时,程序将会抛出异常,此时程序将会是死循环一直运行如下:
             * Enter two integers:Try again:(Incorrect input:two integers are required)
             * Enter two integers:Try again:(Incorrect input:two integers are required)
             * Enter two integers:Try again:(Incorrect input:two integers are required)
             * 原因是如果number1或者number2不是整数时,将会抛出异常,当第二次执行程序时,
             * 由于第一次输入的非整数的数值没有被读取,input.nextInt()会继续读取,结果会一直发生异常,
             * 故而continueInput=false;语句永远执行不到,出现死循环;
             * 
             * 如果使用input.nextLine();语句,即使number1或者number2在某次输入中不是整数,
             * input.nextLine();语句会读取回车符前面没有被读取的非整数而不输出,以此来保证程序正确
             * 执行。
             * 
             */

            input.nextLine();

        }

    }while(continueInput);




}

}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值