想用try-catch循环防弹

时间:2016-04-18 05:22:19

标签: java while-loop try-catch

我遇到了这个问题 - 编写一个读取数字并打印所有二进制数字的程序:打印剩余数字%2,然后用数字/ 2替换数字。继续直到数字为0。 它成功地显示了二进制数字,但我想对其进行弹出证明,以便在使用字母时不会崩溃。它没有崩溃但我想允许用户输入另一个号码而不重新启动程序。关于如何做到这一点的任何提示?

    Scanner scanIn = new Scanner(System.in);
    int number = 0;
    System.out.print("Please enter a number: ");
    try {
        number = scanIn.nextInt();
   } catch (InputMismatchException ime) {
        System.out.println("Please only enter integers!");
        number = 0;    
        scanIn.nextLine();
   }            
    while (number > 0) {
        System.out.println(number % 2);
        number /= 2;
    }
}

2 个答案:

答案 0 :(得分:0)

你需要2个循环, 第一个将接受输入,直到它是一个整数(Integer.parseInt())被try / catch包围

然后,当您确认输入为整数时,就会开始循环。

答案 1 :(得分:0)

一种方法是将代码包含在另一个while循环中,该循环永远迭代,并在满足某个条件时突破循环。如果输入的输入无效,我还修改了你的代码以反复提示输入整数。

Scanner scanIn = new Scanner(System.in);
int number = 0;

while(true) {
    System.out.print("Please enter an integer, or 0 to quit: ");

    // input verification 
    boolean valid = false;
    while(!valid) {
        try {
            number = scanIn.nextInt();
            valid = true;
        } catch (InputMismatchException ime) {
            System.out.println("Please only enter integers!");
            System.out.print("Please enter an integer, or 0 to quit: ");
            valid = false;
        }
    }

    // break out of the loop if 0 is entered
    if(number == 0) {
        break;
    }

    while (number > 0) {
        System.out.println(number % 2);
        number /= 2;
    }
}