我对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;
}
答案 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)
你有两个问题:
即使在那之后,如果您发现任何卡面朝上,您将返回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()方法的任何值。