【问题标题】:'for' does not loop in boolean method'for' 不在布尔方法中循环
【发布时间】:2018-10-30 12:39:04
【问题描述】:

我有这个布尔方法,它应该比较“word”和“inputPlay”之间的所有字符,如果它们匹配则将 int 数组更新为值 1 并返回 true。

但是,它不会循环,而是在找到匹配项时停止。我应该怎么做?

public static boolean updateArray(String word, int[] guesses, String inputPlay) {

    for (int i = 0; i < word.length(); i++) {
        if (inputPlay.charAt(0) == word.charAt(i)) {
            guesses[i] = 1;
        }
        return true;
    }
    return false;
}

【问题讨论】:

  • 您是否只想将return true inside if 块?其他一些逻辑?目前,这将始终在循环的第一次迭代中返回 true。您什么时候回来?
  • 这是因为你在 for 循环中返回 true。
  • @MatthewCollins:那么您不想返回循环内部。如果找到匹配项,您希望在循环后返回。
  • 另外,charAt(0) 总是获取inputPlay 的第一个字符并将其与word 的下一个字符进行比较——这应该是chartAt(i),如果wordinputPlay 的长度不同。
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已在 CC BY-SA 3.0 license 下授予 SE 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 SE 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work? ...

标签: java for-loop


【解决方案1】:

如果任何字母匹配,您应该返回true,您需要使用在循环外声明的临时boolean

public static boolean updateArray(String word, int[] guesses, String inputPlay) {
    boolean match = false;

    for (int i = 0; i < word.length(); i++) {
        if (inputPlay.charAt(0) == word.charAt(i)) {
            guesses[i] = 1;
            match = true;
        }
    }

    return match;
}

因为我们在 if 语句中将 match 设置为 true,所以它仍然会继续迭代并在 for 循环终止后返回 true,假设任何字母匹配。否则,它将返回false

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2019-07-03
    • 2019-07-15
    • 1970-01-01
    相关资源
    最近更新 更多