【问题标题】:Find all positions of an occurence in a char array查找 char 数组中出现的所有位置
【发布时间】:2015-01-27 11:52:29
【问题描述】:

我正在尝试编写一个方法,它接收单个字母(字符串)和一个创建布尔数组的字符数组。然后将布尔数组初始化为所有位置为假。 然后 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;
}

【问题讨论】:

  • wordInArrayprintIfTrue 的类型是什么?无论如何,printIfTrue[i] == true; 应该和= 在一起,而不是==
  • guess 必须是 char 类型;它是string 类型的吗?
  • 数组是 0 索引的,你的循环终止条件应该是 < 否则你会得到一个 ArrayIndexOutOfBoundsException

标签: java arrays loops


【解决方案1】:

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

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

【讨论】:

  • 谢谢!事实上,我花了一些时间来建立联系。
【解决方案2】:

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

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

printIfTrue[i] = true;

我读到==,因为一样。:

if (wordInArray[i] == guess )

读作

如果wordInArray的第i个字符猜测相同

我将= 读为变成取值

printIfTrue[i] == true; 

读作

printIfTrue 的第 i 个元素 变为 true

【讨论】:

    【解决方案3】:

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

    (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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2016-03-07
      • 2019-11-10
      • 1970-01-01
      • 2012-07-18
      • 2013-08-21
      • 2017-11-20
      相关资源
      最近更新 更多