Loops 尝试在try中打印某些内容,以便在其中一个输入为0时显示某些内容
我正在尝试创建一个带有菜单的计算器,用户可以在其中输入1、2、3、4来选择他们想要的操作,#4是除法。 我试图这样做,当第二个值为0的secondN(我要求两个输入同时用空格分隔)时,它会说“你不能将一个数字除以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
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()无效(因此再次执行该操作将引发另一个异常。)