2014-12-13 36 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