我正在尝试使用菜单创建一个计算器,用户可以输入1,2,3,4来选择他们想要的操作,#4是分区。 我试图这样做,以便当secondN(我要求一次空格分隔2个输入),这是第二个值为0时,它会说“你不能将数字除以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();
}
答案 0 :(得分:0)
添加此功能(可能有点非正统)的一种快速而廉价的方法是在try-block中检查0并抛出自己的InputMismatchException。
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);
你应该注意的一件事是你的catch-block中的行secondN = readInput.nextFloat();
。你输入catch块是可能的,因为try-block中的语句secondN = readInput.nextFloat();
不起作用(所以再次这样做会抛出另一个异常。)