2016-03-30 56 views
-8

因此,作爲一個初學者,我試圖按如下方式使用開關:Java的交換機不能正常工作像預期

switch (c_a.getText()) 
    { 

     case "Customer": 
     { 
      new LoginPage().setVisible(true); 
     } 

     case "Admin": 
     { 
      new LoginPageadmin().setVisible(true); 
     } 

     default: 
     { 
      JOptionPane.showMessageDialog(this, "Please try again"); 
     } 
    } 

儘管這裏的問題是,它在默認情況下打開了的JOptionPane也是如此。我究竟做錯了什麼?

+3

您需要在交換機條件之間添加'break'(默認值爲fall through)。 –

+1

你需要「休息」; – bmargulies

+1

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html – azurefrog

回答

1

在一個switch聲明,您需要將break陳述,否則額外的開關模塊可以被執行。以下是關於switch語句的Java tutorial中所說的內容:

每個break語句終止封閉的switch語句。控制流程繼續執行開關塊後的第一條語句。 break語句是必要的,因爲如果沒有它們,switch語句會落空。無論後續案例標籤的表達如何,在匹配案例標籤之後的所有語句都會按順序執行,直到遇到break語句爲止。

如果沒有break;,您的代碼將經常「穿過」開關塊,就像這裏的情況一樣。