简体   繁体   English

IF ELSE语句输出

[英]IF ELSE Statement Output

Why does message5 output even when courseNum is equal to 103 or 206? 为什么即使courseNum等于103或206,message5也为什么输出? I think it has to do with where the last else statement is placed, but I've already tried moving it around and have gotten results where message5 would output in all the if statements. 我认为这与最后一个else语句的放置位置有关,但是我已经尝试过将其移至其他位置,并获得了在所有if语句中将message5输出的结果。

      if (courseNum == 103)
      {
         JOptionPane.showMessageDialog(null,message1);
      }                  
      if (courseNum == 206)
      {
         JOptionPane.showMessageDialog(null,message4);
      }      
      if (courseNum == 106)
      {
         answer = JOptionPane.showInputDialog("Have you passed IT 102?");
         if (answer.equals("yes"))
         {
            JOptionPane.showMessageDialog(null,message2);
         }
         else if (answer.equals("no"))
         {
            JOptionPane.showMessageDialog(null,message3);
         }
      }
      else
      {
         JOptionPane.showMessageDialog(null,message5);
      }

You should use ... else if ... instead of just if : 您应该使用... else if ...而不是if

  if (courseNum == 103)
  {
     JOptionPane.showMessageDialog(null,message1);
  }                  
  else if (courseNum == 206)
  {
     JOptionPane.showMessageDialog(null,message4);
  }      
  else if (courseNum == 106)
  {
     answer = JOptionPane.showInputDialog("Have you passed IT 102?");
     if (answer.equals("yes"))
     {
        JOptionPane.showMessageDialog(null,message2);
     }
     else if (answer.equals("no"))
     {
        JOptionPane.showMessageDialog(null,message3);
     }
  }
  else
  {
     JOptionPane.showMessageDialog(null,message5);
  }

Or, even better, a switch : 或者,甚至更好,一个switch

switch (courseNum) {
case 103:
    JOptionPane.showMessageDialog(null,message1);
    break;

case 206:
    JOptionPane.showMessageDialog(null,message4);
    break;

case 106:
    answer = JOptionPane.showInputDialog("Have you passed IT 102?");
    if (answer.equals("yes")) {
        JOptionPane.showMessageDialog(null,message2);
    } else if (answer.equals("no")) {
       JOptionPane.showMessageDialog(null,message3);
    }
    break;

default:
    JOptionPane.showMessageDialog(null,message5);
}

It's an else statement; 这是一个else声明; it's what's executed if nothing else matches. 如果没有其他匹配,这就是执行的内容。

This is how your code looks (in terms of evaluating conditionals): 这是您代码的外观(就评估条件而言):

  • if
  • if
  • if...else

That dangling else is going to be caught every time if its leading if is false. 如果它的前导if是错误的, if每次悬挂的else都会被捕获。

What you likely wanted was to use else if statements instead. 您可能想要的是使用else if语句代替。

Code below: 代码如下:

if (courseNum == 103) {
    JOptionPane.showMessageDialog(null, message1);
} else if (courseNum == 206) {
    JOptionPane.showMessageDialog(null, message4);
} else if (courseNum == 106) {
    answer = JOptionPane.showInputDialog("Have you passed IT 102?");
    if (answer.equals("yes")) {
        JOptionPane.showMessageDialog(null, message2);
    } else if (answer.equals("no")) {
        JOptionPane.showMessageDialog(null, message3);
    }
} else {
    JOptionPane.showMessageDialog(null, message5);
}

Please use a switch statement instead of an if else chain, it's going to keep the code more clear and you will find bugs in your code with more ease. 请使用switch语句而不是if else链,这将使代码更清晰,并且您将更轻松地发现代码中的错误。

switch (courseNum) {
    case 103:
        JOptionPane.showMessageDialog(null, message1);
        break;

    case 206:
        JOptionPane.showMessageDialog(null, message4);
        break;

    case 106:
        answer = JOptionPane.showInputDialog("Have you passed IT 102?");
        if (answer.equals("yes")) {
            JOptionPane.showMessageDialog(null, message2);
        } else if (answer.equals("no")) {
            JOptionPane.showMessageDialog(null, message3);
        }
        break;

    default:
        JOptionPane.showMessageDialog(null, message5);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM