在for语句中使用if语句

时间:2015-05-09 13:12:38

标签: java if-statement for-loop

我对java很陌生,而且我正在完成一项任务。我需要通过一些卡片,确定它们是否都面朝上,如果它们都是,请返回祝贺信息。

我正在编写循环卡片的代码,以确定它们是否全部面朝上。现在,代码似乎没有在返回" true"之前检查所有卡片。

是否可以在for循环中使用if语句或者我做错了吗?

public boolean checkAllMatchesFound() {     
   for (int i=0; i<MatchingGame.NUMBER_OF_CARDS; i++) {
      if ((cards[i].isFacingUp()) == true);
         return true;
   }

   return false;
}

6 个答案:

答案 0 :(得分:1)

在这些情况下,您通常使用反逻辑。在您的情况下,只要找到面朝上的卡而不检查其他卡,该方法将返回true。因此:

public boolean checkAllMatchesFound()
{       
   for (int i=0; i<MatchingGame.NUMBER_OF_CARDS; i++){
      if (!cards[i].isFacingUp())
         return false;
   }
   return true;
}

答案 1 :(得分:0)

在if语句之后你是一个分号。删除它&amp;它会起作用。

$scope.save = function() {
    var refState = new Firebase("https://<name>.firebaseio.com/users/" + currentAuth.uid + "/state");
    var html = "<div>hello</div>";
    refState.set({
        "state": html
    }, function(error) {
        if (error) {
            console.log("not been saved")
        }
    })
}

答案 2 :(得分:0)

绝对可能。问题就在于当您发现卡片朝上时,您将返回true。迭代完所有卡片后,您必须返回true/false。你可以这样做 -

boolean isAllFacingUP = true;
public boolean checkAllMatchesFound()
{       
   for (int i=0; i<MatchingGame.NUMBER_OF_CARDS; i++){

      if (!cards[i].isFacingUp()){
         isAllFacingUp = false;
      }

}
   return isAllFacingUP;
}

答案 3 :(得分:0)

你有两个问题:

  1. 分号后,如果哪个java将视为空语句,因此不会检查条件。
  2. 即使在那之后,如果您发现任何卡面朝上,您将返回true,这与您需要的相反,因此您的逻辑应该是:

    public boolean checkAllMatchesFound() {       
         for (int i=0; i<MatchingGame.NUMBER_OF_CARDS; i++){
               if (!cards[i].isFacingUp())
                    return false;
         }
         return true;
    }
    

答案 4 :(得分:0)

如果您可以使用Java 8,那么您可以利用流来为您完成所有这些工作。以下将返回您想要的内容

Arrays.stream(cards).allMatch(card -> card.isFaceUp());

或者使用方法参考:

Arrays.stream(cards).allMatch(Card::isFaceUp);

答案 5 :(得分:0)

你打开并关闭if loop.within你返回true in else part return false或者你只是赋予FacingUp()方法的任何值。