2014-12-13 42 views
-3
public void actionPerformed(ActionEvent event) 
    { 
     String getStringChar = event.getActionCommand(); 
     char c = getStringChar.charAt(0); 

     int arrayLength = Game.labelArray.length; 

     for(int i = 0; i < arrayLength; i++) 
     { 

      if(Game.labelArray[i].getText().contains(""+ c)) 
      { 
       Game.labelArray[i].setVisible(true); 

      } 


      if(i == arrayLength && !(Game.labelArray[i].getText().contains(""+ c))) 
      { 
       score++; 
       Game.setImage(score); 
      } 
     } 
    }// end method actionPerformed 
+1

什麼是 「好」 是什麼意思?你有什麼問題? – mkobit 2014-12-13 06:43:13

+0

其實我的意思是第二個if語句永遠不會有機會做它的工作,我認爲for循環沒有給出一個啓動的機會。 – 2014-12-13 06:45:15

+0

你的代碼是否編譯?跑?產生錯誤?產生意想不到的結果?問題是什麼? – 2014-12-13 06:45:19

回答

1

由於if語句是需要做的最後一件事你可以以後用一些小的只是執行它的循環調整。

public void actionPerformed(ActionEvent event) 
{ 
    String getStringChar = event.getActionCommand(); 
    char c = getStringChar.charAt(0); 

    int arrayLength = Game.labelArray.length; 

    for(int i = 0; i < arrayLength; i++) 
    { 
     if(Game.labelArray[i].getText().contains(""+ c)) 
     { 
      Game.labelArray[i].setVisible(true); 
     }  
    } 

    if(!(Game.labelArray[arrayLength-1].getText().contains(""+ c))) 
    { 
     score++; 
     Game.setImage(score); 
    } 
}// end method actionPerformed 

更新後評論

public void actionPerformed(ActionEvent event) 
{ 
    String getStringChar = event.getActionCommand(); 
    char c = getStringChar.charAt(0); 

    int arrayLength = Game.labelArray.length; 

    containsCharacter = false 
    for(int i = 0; i < arrayLength; i++) 
    { 

     if(Game.labelArray[i].getText().contains(""+ c)) 
     { 
      Game.labelArray[i].setVisible(true); 
      containsCharacter = true 
     }  
    } 

    if(!containsCharacter) 
    { 
     score++; 
     Game.setImage(score); 
    } 
}// end method actionPerformed 
+0

謝謝,但它不會完成我需要的工作。讓我解釋。 – 2014-12-13 07:01:03

+0

所以這應該是一個hang子手遊戲,第二個如果只有在所有數組都被選中的情況下才能運行,那麼如果該角色不在其中,那麼我應該增加分數,這反過來又會增加一個身體部分給hang子手。 ..如果它運行在[arrayLength-1],它將導致錯誤的增量...... – 2014-12-13 07:05:10

+0

因此,如果我正確理解你的代碼,你現在正在做的是循環查看它是否包含字符。之後檢查數組中的最後一個元素。如果這個元素不是你增加分數的角色。 – 2014-12-13 07:12:34

1

當你在循環體中說

for(int i = 0; i < arrayLength; i++) 

i從未等於arrayLength。爲了得到最後一個元素你的第二個if應該是這個樣子(注意- 1

if(i == arrayLength - 1 && 
    !(Game.labelArray[i].getText().contains(""+ c))) 
+0

正好,_i 2014-12-13 06:46:39

+0

多數民衆贊成在真正的ive改變它<=但後來我得到另一個問題.. – 2014-12-13 06:47:14

+0

@jahangirhunani是的,你會得到一個數組索引超出界限的異常,因爲'Game.labelArray [i]'是超出界限當我'是等於數組長度。數組中的最後一個元素是'arrayLength - 1',正如我在答案中所說的那樣。 – 2014-12-13 06:48:04