Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 尝试在try中打印某些内容,以便在其中一个输入为0时显示某些内容_Loops_Try Catch_Calculator - Fatal编程技术网

Loops 尝试在try中打印某些内容,以便在其中一个输入为0时显示某些内容

Loops 尝试在try中打印某些内容,以便在其中一个输入为0时显示某些内容,loops,try-catch,calculator,Loops,Try Catch,Calculator,我正在尝试创建一个带有菜单的计算器,用户可以在其中输入1、2、3、4来选择他们想要的操作,#4是除法。 我试图这样做,当第二个值为0的secondN(我要求两个输入同时用空格分隔)时,它会说“你不能将一个数字除以0。请输入另一个数字:”并允许用户再次输入两个数字。但是因为除以零自然得到无穷大,我很难做到这一点 我试过如果,如果…或者在里面试一下,但是我没能让它工作。 我的代码目前如下 if(inputInt == 4){ do { System.out.print

我正在尝试创建一个带有菜单的计算器,用户可以在其中输入1、2、3、4来选择他们想要的操作,#4是除法。 我试图这样做,当第二个值为0的secondN(我要求两个输入同时用空格分隔)时,它会说“你不能将一个数字除以0。请输入另一个数字:”并允许用户再次输入两个数字。但是因为除以零自然得到无穷大,我很难做到这一点

我试过如果,如果…或者在里面试一下,但是我没能让它工作。 我的代码目前如下

if(inputInt == 4){ do {
                System.out.print("Please enter two floats to divide, separated by a space:   ");
                try { firstN = readInput.nextFloat();
                     secondN = readInput.nextFloat();
                    break;  
                 } 
                catch (final InputMismatchException e) {
                    secondN = readInput.nextFloat();
                    System.out.println ("You have entered invalid value(s). Please enter valid value(s).");
                    readInput.nextLine();
                    continue;
                }
                 }while (true);
                    System.out.printf("Result of dividing %5.2f by %5.2f is %5.2f",  firstN, secondN, firstN/secondN);
                    System.out.println("\n \nPlease press enter to return to the main menu.");
                    Scanner keyboard = new Scanner(System.in);
                    keyboard.nextLine();    

    }

添加此功能的一种快速而廉价的方法(可能有点非正统)是在try块中检查0并抛出您自己的inputmaschException

do {
    System.out.print("Please enter two floats to divide, separated by a space:   ");
    try {
        firstN = readInput.nextFloat();
        secondN = readInput.nextFloat();
        if(secondN == 0) {
            System.out.println("The denominator cannot be 0.");
            throw new InputMismatchException();
        }
        break;
    } catch (final InputMismatchException e) {
        System.out.println("You have entered invalid value(s). Please enter valid value(s).");
        readInput.nextLine();
    }
} while (true);
您还应该注意的一点是您的行
secondN=readInput.nextFloat()在捕捉块内。您输入catch块可能是因为语句
secondN=readInput.nextFloat()无效(因此再次执行该操作将引发另一个异常。)