IF ELSE语句输出

时间:2015-06-07 23:03:18

标签: java

为什么message5输出即使当courseNum等于103或206?我认为它与最后一个else语句的位置有关,但是我已经尝试过移动它并获得了结果,其中message5将在所有if语句中输出。

      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);
      }

3 个答案:

答案 0 :(得分:1)

您应该使用... 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);
  }

或者更好的是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);
}

答案 1 :(得分:0)

这是一个else声明;如果没有别的东西匹配的话,它就是被执行的。

这是您的代码的外观(在评估条件方面):

  • if
  • if
  • if...else

如果它的前导else为假,则每次都会抓住悬空if

您可能想要的是使用else 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);
}

答案 2 :(得分:-1)

请使用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);
}