在 char 数组中查找出现的所有位置

Find all positions of an occurence in a char array

我正在尝试编写一个接受单个字母(字符串)和一个创建布尔数组的字符数组的方法。然后将布尔数组初始化为所有位置都为 false。 然后 for 循环遍历 char 数组,对于在 char 数组中找到字母(猜测)的每个位置,布尔数组中的相同位置被标记为 true。问题出在 for 循环的 if 部分。语法不是我的 JDE 接受的。 感谢收到任何提示。

    boolean[] printIfTrue = new boolean[wordInArray.length];
    for (int i = 0 ; i == wordInArray.length ; i++) {
        if (wordInArray[i] == guess ){                   // problem
            printIfTrue[i] == true;                      // problem
        }

    }

    return printIfTrue;
}

您不能将字符串与字符进行比较。您的 guess 变量应该是 char 类型(使用 guess = valueEnteredByTheUserAsString.charAt(0))。

== 是比较运算符。要为变量赋值,必须使用 =:

printIfTrue[i] = true;

我读 == 因为 相同。:

if (wordInArray[i] == guess )

读作

if the ith char of wordInArray is same as guess

我读 = 是因为 变成了 取值 :

printIfTrue[i] == true; 

读作

the ith element of printIfTrue becomes true

循环可以重写如下。此外,guess 应该是 char.

类型
for (int i = 0 ; i < wordInArray.length ; i++) {
    printIfTrue[i] = wordInArray[i] == guess;
}

== 是关系运算符
== 检查两个操作数的值是否相等,如果相等则条件成立。

(A == B) is not true. 

= 是赋值运算符

= 简单赋值运算符,将右侧操作数的值分配给左侧操作数

C = A + B will assign value of A + B into C

不要混用,正如@JB Nizet 所说,

你不能直接比较 String 和 Character ,我假设 wordsInArray 是你的字符数组而 guess 是字符串,所以你可以使用

wordsInArray[i]==guess.charAt(i);
printIfTrue[i] = true;