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