我被困在下面的这段代码中,我一直在尝试使用冒泡排序按姓氏对对象数组进行排序,然后将其打印出来。我在哪里出错,如何打印?这是我的代码

for(int i = 1; i < clipArray.length; i++) {
    for(int j = 0; j < clipArray.length; j++) {
        if(((clipArray[j].getSurname()).compareToIgnoreCase((clipArray[j+1].getSurname()))) {
            Clip temp = clipArray[j];
            clipArray[j] = clipArray[j+1];
            clipArray[j+1] = temp;
        }
    }
}


问题:必填布尔值,找到int

最佳答案

问题是String#compareToIgnoreCase返回int,并且您需要boolean语句的if结果。从其javadoc:


  退货
  
  指定的String大于,等于或小于此String时,为负整数,零或正整数,而忽略大小写考虑


因此,根据定义将此方法的结果与另一个数字进行比较。

if (clipArray[j].getSurname().compareToIgnoreCase(clipArray[j+1].getSurname()) < 0) {
    //...
}


另外,您的for循环声明中还有另一个错误。他们应该是这样的:

for(int i = 1; i < clipArray.length; i++) {
    for(int j = 0; j < clipArray.length - 1; j++) { //spot the difference
        //...
    }
}

10-06 03:06