利用try-catch机制 让用户输入一个整数 如果不是整数就循环输入直到输入整数为止

img

img


这里一开始我用的是图2的方法 但是输入不是整数之后就会卡主不能进入下一次循环 ,不明白其中的缘由,求解

img

应该是这么写的,要用nextline方法:

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(true){
            try{
                String line = scan.nextLine();
                int i = Integer.parseInt(line);
                System.out.println(i);
                break;
            }catch(Exception e){
                continue;
            }
        }
    }
}

nextInt()方法只有当输入中有整数时,才会从输入参数中取出输入值,否则就会报异常,而你这里catch了异常,并执行下一个循环,实际上下一次还是用的10.1这个参数,接着又报异常,就死循环了。
改成这样:

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String param;
        int i;
        while (true) {
            try {
                param = in.next();
                i = Integer.parseInt(param);
                break;
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("请输入整数:");
            }
        }
        System.out.println("输入的整数是:" + i);
    }