0

我有一些 java 代码,我在其中定义了一个数组,然后用这样的值填充它

String[] longestSequences = new String[40];
Arrays.fill(longestSequences,"moo");

稍后在代码中,在我用不同的非“moo”字符串填充数组中的前几个插槽后,我进行了比较

while (!"moo".equals(longestSequences[counter]));

...但是每次都"moo".equals(longestSequences[counter])返回 true(计数器初始化为 0,并且我使用 print 语句来检查数组在此 while 循环之前是否确实有字符串不是 moo)...

我试过使用equals(longestSequences[counter],"moo"),但编译器抱怨我在字符串上使用了对象方法!特别是,它给了我这个错误

DNA.java:54: error: method equals in class Object cannot be applied to given types
4

1 回答 1

1

最可能的原因:counter整个循环中的值是稳定的,因此您总是将“moo”与某个固定单元格的值进行比较。如果那个单元格碰巧持有“moo”,那么你一定会true在每次迭代中进行。

底线:确保counter在循环中进行了更改。

我还要进一步说,您真的不想与longestsequences[counter]bur 进行比较,而是在循环开始之前将longestsequences[i]wherei初始化为零,并且随着循环的每次迭代而增加。

至于equals(longestSequences[counter],"moo")- 这行不通。该equals方法是采用单个参数的实例方法。它将参数与调用此方法的实例(即:与点左侧的对象.)进行比较。因此,如果你想比较 X 和 Y,你应该写X.equals(Y).

于 2013-07-25T23:35:31.430 回答