我正在尝试使用 switch 语句创建一个循环。如果用户未在 1 和 4 之间输入,则会再次出现“您输入的选项不正确”的消息。我正在制作 Lynda 视频。我不确定在哪里放置循环。我目前找不到让它循环的方法。是在 switch 中还是在 getInput 方法中。是否有可能做到这一点?如果有人知道,请提前感谢。我正在使用eclipse,java 7。
public static void main(String[] args) {
String s1 = getInput("Enter a numeric value: ");
String s2 = getInput("Enter a numeric value: ");
double result = 0;
do {
String op = getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
int opInt = Integer.parseInt(op);
switch (opInt)
{
case 1:
result = addValues(s1, s2);
break;
}
} while(opInt<1 || opInt >4);
编辑...的错误消息
此行有多个标记 - opInt 无法解析为变量
opInt 无法解析为变量
//在其他数学运算符中,我有一个名为 addValues 的方法
private static double addValues(String s1, String s2) throws NumberFormatException { double d1 = Double.parseDouble(s1); double d2 = Double.parseDouble(s2); double result = d1 + d2; return result; } private static String getInput(String prompt) { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print(prompt); System.out.flush(); try { return stdin.readLine(); } catch (Exception e) { return "Error: " + e.getMessage(); } }
编辑 我对 Tal 和 Quoi 给我的解决方案有疑问。使用 Quoi 我得到 opInt 的错误无法解析为变量,因为使用 Tal 没有任何反应。
所以我做了以下...
String s1 = getInput("Enter a numeric value: ");
String s2 = getInput("Enter a numeric value: ");
String op = getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
//convert opInt into integer
int opInt = Integer.parseInt(op);
if (opInt <1 || opInt >4) // used a if statement
{
getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
}
double result = 0;
{
switch (opInt)
{
...........
...........
}
}
使用 if 语句,该方法会回调 switch 语句,但在选择正确的选项后,会显示“您输入的选项不正确”和“答案是 0.0”的打印行,因此不进行计算。我不确定这是一个简单的解决方案还是什么?
编辑 我现在试图在开关外做一个while循环。发生的事情是,当我在 1 或 4 之外选择时,无论我是否输入有效选项,我都会收到“输入 1=加,2=减,3=乘,4=除”的消息。
do
{
getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
} while (opInt <1 || opInt >4);
double result = 0;
{
switch (opInt)
{
case 1:
result = addValues(s1, s2);
break;
...........
...........
}
}