需要一个更好的for循环来获得我的第二个if语句

时间:2014-12-13 06:42:06

标签: java arrays if-statement for-loop

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

2 个答案:

答案 0 :(得分:1)

当你说

for(int i = 0; i < arrayLength; i++)
循环体中

i 永远不会等于arrayLength。要获得最后一个元素,您的第二个if应该看起来像(注意- 1

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

答案 1 :(得分:1)

由于if语句是最后需要完成的事情,你可以在for循环之后执行它并进行一些小调整。

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