2014-02-27 50 views
0

比方說,如果最後一級遊戲被擊敗,那麼你不會顯示一個對話框,詢問玩家是否想要進入下一級,而是進入mainmenu。所以基本上如果事情發生後應該發生的事情不要。如何編寫代碼,如果發生什麼事後沒有發生其他事情?

private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {            

    final ImageIcon pokeballIcon = new ImageIcon("C:\\Users\\bacojul15\\Pictures\\pokeball5.gif"); 
    final ImageIcon pokemoneggIcon = new ImageIcon("C:\\Users\\bacojul15\\Pictures\\nidoking.gif"); 
    final ImageIcon pokemonredIcon = new ImageIcon("C:\\Users\\bacojul15\\Pictures\\red.gif"); 

    String userAnswer = answertextArea.getText().trim(); 

     if (userAnswer.equalsIgnoreCase(answers.get(questionNumber))) { 

      answerLabel.setText("Correct"); 
      levelScore ++; 
      triviagui.totalScore ++; 


     } else { 
      answerLabel.setText("Incorrect"); 
     } 
     answertextArea.setText(""); 
     questionNumber++; 
     if(questionNumber == questions.size()){ 
      JOptionPane.showMessageDialog(null, "Your score for this level was : " + levelScore + " out of 10. \n Your total score is " + triviagui.totalScore, "Scores",JOptionPane.INFORMATION_MESSAGE, pokeballIcon); 
       if(difficulty == 3){ 
         JOptionPane.showMessageDialog(null, "Good job you beat the game! \n Your total score was " + triviagui.totalScore + " out of 30.", "Thanks for playing!", JOptionPane.INFORMATION_MESSAGE, pokemonredIcon); 
         triviagui.questionFrame.setVisible(false); 
         triviagui.mainFrame.setVisible(true); 
        } 
       int leveloptionPane = JOptionPane.showConfirmDialog(null,"Would you like to go on to the next level?" , "Next Level?", JOptionPane.YES_NO_OPTION, levelScore, pokemoneggIcon); 
      if(leveloptionPane == JOptionPane.YES_OPTION){ 
        difficulty++; 
        triviagui.questionFrame.setVisible(false); 
        triviagui.questionFrame=new QuestionFrame(difficulty); 
        triviagui.questionFrame.setVisible(true); 

      } 
      if(leveloptionPane == JOptionPane.NO_OPTION){ 
       triviagui.questionFrame.setVisible(false); 
       triviagui.mainFrame.setVisible(true);      
     } 
      return; 
     } 
     updateQuestionScore(); 

} 
+5

呃...'return'? – fge

+0

順便說一句,您可能會在整個程序中重新使用這些圖標,那麼爲什麼每次都需要重新讀取它們呢?考慮在程序啓動時讀取它們一次,並將它們存儲在可以使用和重用的變量中。另一方面,我試圖重構該代碼,以便邏輯部分不在GUI內部。如果通過調用方法縮短了代碼的長度,則調試起來會更容易,更容易增強(例如,您當前希望根據狀態增強或更正程序流)。 –

回答

4

你只需要做:

if(something happens) { 
    return; 
} 
3

如果你想從方法使用

回報跳出;類似的東西

例如:

public void myMethod(){ 
    if(mynumber==5){ 
     doThis(); 
     }else{ 
     return; 
     } 
     /* 
     *do something else <- this wont be executed if number doesnt equal 5 
     *cause we are already out of method. 
     */ 
} 

如果你不想從整個方法芽跳出只形成的環路的一部分。那

break; 

例如:

public void myMethod(String[] stringArr){ 
    for(String s:stringArr){ 
     if(s.equals("hello")){ 
      break; //get me out of this loop now ! 
     }else{ 
      s+="alriight"; 
      } 
     } 
     } 
     doSomethingElse();//this will be executed even if you go thru break; you are still inside method dont forget.You are just out of loop 

} 

沒有關於這更好的用途,也許例子是不是最好的芽,你會了解如何使用它形成這個:)。

當你使用break或者return。在eclipse中,例如你會顯示你實際退出的地方。它會突出「}」

+0

謝謝,但Java說:「打破外部開關或循環」哦,順便說一句,我把它放在第二if語句的結尾。 – user3207935

+0

我加了一些例子。不確定大括號是否會導致我把它們從我的頭上(希望是正確的)會嘗試修復,如果我注意到壞的。 –

1

有幾種方法可以做到這一點:

你可以從return的方法。

您可以break退出循環或continue開始循環的下一次迭代。

如果第一部分沒有執行,您可以使用'else'來僅執行其他代碼。

您可以設置一個布爾標誌變量,然後檢查代碼中的其他地方。

取決於你想要做什麼每個有時是最好的方式,有時不是最好的方式。

相關問題