【发布时间】:2020-11-13 23:10:26
【问题描述】:
我是Java新手,正在做一个计算器APP。
我试图让我的计算器在“无效输入”之后的 else 语句之后不断提示用户输入正确答案(键入 Y 或 N)。
我希望程序在最终输入正确的输入后继续计算。
我玩过嵌入的while 循环,但最终以无限循环或无分辨率终止的循环结束。代码如下。
import java.util.Scanner;
class Calculate {
public static void.main(String[] args) {
System.out.println("Welcome To Calculator!");
System.out.println("*************************************************************************");
Scanner userinput = new Scanner(System.in);
double num1, num2;
String choice;
boolean youDecide = true;
while(youDecide == true) {
System.out.println("Please enter a number: ");
num1 = userinput.nextDouble();
System.out.println("Please enter an available operator (+, -, *, /): ");
char operator = userinput.next().charAt(0);
System.out.println("Please enter another number: ");
num2 = userinput.nextDouble();
double output;
switch(operator)
{
case '+':
output = num1 + num2;
break;
case '-':
output = num1 - num2;
break;
case '*':
output = num1 * num2;
break;
case '/':
output = num1 / num2;
if(num2 == 0)
System.out.println("Math error! A number cannot be divided by zero.");
break;
default:
System.out.println("Invalid input. Please enter an available operator, i.e (+, -, *, /): ");
return;
}
System.out.println("*************************************************************************");
System.out.println("The answer is: " + "\n" + output);
System.out.println("*************************************************************************");
System.out.println("Would you like to calculate again?");
System.out.println("Please enter Y for yes, or N for no");
choice = userinput.next();
if(choice.equalsIgnoreCase("Y")) {
System.out.println("Okay. Let's continue!");
System.out.println("*************************************************************************");
youDecide = true;
}
else if(choice.equalsIgnoreCase("N")) {
System.out.println("*************************************************************************");
System.out.println("Okay. Thanks for using Calculator. Goodbye!");
System.exit(0);
}
else {
System.out.println("Invalid input. Please try again...");
System.out.println("*************************************************************************");
youDecide = false;
}
}
}
}
【问题讨论】:
-
public static void.main()是如何编译的?始终复制/粘贴代码,切勿在 StackOverflow 问题中重新输入代码。 -
为什么在无效输入部分设置
youDecide = false?这告诉循环结束,它属于'N'选项而不是System.exit(0)。 -
吉姆,我是通过手机发布的,所以我必须编辑文本才能在问题中发布代码。我确实粘贴了代码,但该网站抱怨缩进,所以这就是结果。
-
此外,System.exit(0) 似乎是在提示用户决定继续并输入“N”时让程序终止的唯一方法。我正在为 else 语句使用嵌入式 while 循环,在该循环中,用户最终输入正确的输入后,主循环将继续。这是我遇到问题的部分,因为我最终遇到了无限嵌入式循环或提前终止的循环。
标签: java switch-statement calculator