0

我正在尝试使用 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;
             ...........
             ...........
         }
    }
4

3 回答 3

2

放入switch-case循环内。

do{
   String op = getInput("Enter 1=Add, 2=Subtract, 3=Multiply,  
       4=Divide");
   int opInt = Integer.parseInt(op);

   switch(opInt){
      case 1: ... break;
      case 2: ... break;
      case 3: ... break;
      case 4: ... break;
   }
}while(opInt<1 || opInt >4);
于 2013-01-19T18:56:12.013 回答
1

将它放在最后一个 getInput 调用周围,即读取用户选项的调用。

乐:

这就是我最初的意思。

 String s1 = getInput("Enter a numeric value: ");
 String s2 = getInput("Enter a numeric value: ");

 int opInt = 0;
 do {
   String op = getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
   try {
     opInt = Integer.parseInt(op); 
   }catch(Exception e) {
     //whatever you need to do
   }
 } while (opInt < 1 || opInt > 4);

 switch(opInt) [...]

这里发生了什么:用户输入 2 个数字,然后它会被要求输入他的选项,直到它介于 1 和 4 之间。

于 2013-01-19T18:58:16.450 回答
0

如果您不更改 opInt 变量:

while(opInt < 1 || opInt > 4)
{
    switch (opInt)
    {
        case 1:
        break;
        case 2:
        break;
        default:
    }
}
于 2013-01-19T20:21:10.703 回答