二元运算符的坏操作数类型'< ='

时间:2014-03-31 14:54:14

标签: java mergesort

我似乎无法弄清楚为什么我会收到此错误。我已经尝试将所有内容放在括号中,这有点帮助了解决问题。如果我能得到一些帮助,那就太棒了。

错误:二元运算符'< ='

的错误操作数类型

代码:

public void merge(String[] result, String[] nameA, String[] nameB)
{
    int i1 = 0;   // index into nameA array
    int i2 = 0;   // index into nameB array

    for (int i = 0; i < result.length; i++) 
    {
        if (i2 >= nameB.length || (i1 < nameA.length && nameA[i1] <= nameB[i2])) 
        {
            result[i] = nameA[i1];    // take from nameA
            i1++;
        } 
        else 
        {
            result[i] = nameB[i2];   // take from nameB
            i2++;
        }
    }
}

3 个答案:

答案 0 :(得分:5)

为了比较Java中的String,您需要调用方法compareTo。查看String实现的Comparable接口。

答案 1 :(得分:4)

<=>=运算符适用于intdouble等数字基元类型。要比较String,请使用compareTo方法。

nameA[i1].compareTo(nameB[i2]) < 0

如果您想按长度比较String,请在String#length上使用<=运算符代替:

nameA[i1].length() <= nameB[i2].length()

答案 2 :(得分:1)

除了Luiggi Mendoza和Ivaylo Strandjev的答案之外,我想指出如果你只想确保字符串不同,你可以使用这样的等于:

if (i2 >= nameB.length || (i1 < nameA.length && !nameA[i1].equals(nameB[i2])))