簡體   English   中英

IF ELSE語句輸出

[英]IF ELSE Statement Output

為什么即使courseNum等於103或206,message5也為什么輸出? 我認為這與最后一個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);
      }

您應該使用... 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);
}

這是一個else聲明; 如果沒有其他匹配,這就是執行的內容。

這是您代碼的外觀(就評估條件而言):

  • if
  • if
  • if...else

如果它的前導if是錯誤的, if每次懸掛的else都會被捕獲。

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

請使用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