排序形状方法错误

时间:2016-02-17 00:29:53

标签: java

 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;
}

我正在尝试编写一个方法来对形状进行排序并返回已排序的数组 但输出不给我任何东西,没有输出

2 个答案:

答案 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。此外,如果您要在位置Shapei处交换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对象。