public static Shape [] sortShapes(Shape [] shapes) {
int min;
for (int i = 0; i < shapes.length; i++) {
// Assume first element is min
min = i;
for (int j = i + 1; j < shapes.length; j++) {
if (shapes[i].compareTo(shapes[j]) == -1) {
Shape temp = shapes[i];
shapes[min] = shapes[i];
shapes[i] = temp;
}
}
}
return shapes;
}
我正在尝试编写一个方法来对形状进行排序并返回已排序的数组 但输出不给我任何东西,没有输出
答案 0 :(得分:1)
您的代码中存在多个错误:
if (shapes[min].compareTo(shapes[j]) == -1)
compareTo
的合同有点不同。如果结果为负,则无法保证结果等于-1
。
int temp = shapes[i];
shapes[min] = shapes[i];
shapes[i] = temp[i];
这显然不起作用,因为Shape
!= int
。此外,如果您要在位置Shape
和i
处交换min
s,则指数有问题:
Shape temp = shapes[i]; // save value at pos i
shapes[i] = shapes[min]; // overwrite value just saved
shapes[min] = temp; // overwrite other value with saved value
同样return shapes;
位于错误的位置:您需要保证每个可能的执行路径都有return
语句或unaugth异常。因此,您需要将语句放在方法的最末端,而不是放在外部for
循环内。
答案 1 :(得分:0)
尝试替换这些:
int temp = shapes[i] ; **
...
shapes[i] = temp[i] ;
使用:
Shape temp = shapes[i] ;
...
shapes[i] = temp ;
因为temp是Shape
对象。