我正在创建一个小的算法,这是其中的一部分。

如果用户输入非整数值,我想输出一条消息,然后让用户再次输入数字:

boolean wenttocatch;

do
{
    try
    {
        wenttocatch = false;
        number_of_rigons = sc.nextInt(); // sc is an object of scanner class
    }
    catch (Exception e)
    {
        wenttocatch=true;
        System.out.println("xx");
    }
} while (wenttocatch==true);

我得到一个永无止境的循环,我不知道为什么。

如何确定用户是否输入了一些非整数?
如果用户输入非整数,如何要求用户再次输入?

更新
当我打印异常时,出现“InputMismatchException”,该怎么办?

最佳答案

您不必做尝试。这段代码将为您解决问题:

public static void main(String[] args) {
    boolean wenttocatch = false;
    Scanner scan = new Scanner(System.in);
    int number_of_rigons = 0;
    do{
        System.out.print("Enter a number : ");
        if(scan.hasNextInt()){
            number_of_rigons = scan.nextInt();
            wenttocatch = true;
        }else{
            scan.nextLine();
            System.out.println("Enter a valid Integer value");
        }
    }while(!wenttocatch);
}

10-01 05:49