您会检查我的方法并让我知道我做错了什么吗?谢谢 :)

public static void sortByVehicleMakeModel(Vehicle[] vehicles) {
    boolean swapped = true;

    for(int y = 0; y < vehicles.length && swapped; y++) {
        swapped=false;
        for(int x = 0; x < vehicles.length - (y+1); x++) {
            if(vehicles[x].getMake() && vehicles[x].getModel().compareTo(vehicles[x + 1].getMake() && vehicles[x].getModel())) {
                swap(vehicles, x, x + 1);
                swapped=true;
            }
        }
    }
}


我的错误是在第二条语句.compareto()
未为参数类型java.lang.String,java.lang.String定义运算符&&。

但是,此代码可以正常工作:

public static void sortByOwnerName(Vehicle[] vehicles) {
    boolean swapped = true;

    for(int y = 0; y < vehicles.length && swapped; y++) {
        swapped=false;
        for(int x = 0; x < vehicles.length - (y + 1); x++) {
            if(vehicles[x].getOwner().getName().compareTo(vehicles[x + 1].getOwner().getName())> 0) {
                swap(vehicles, x, x + 1);
                swapped=true;
            }
        }
    }
}

最佳答案

我建议将int getCost()添加到Vehicle对象,然后为if语句使用vehicles[x].getCost() > vehicles[x - 1].getCost()之类的东西。

同样,这种排序也不是很有效。也许Vehicle应该实现Comparable并使用Collections.sort()进行排序。



只需阅读您的问题的更新。

尝试这个:

if (vehicles[x].getMake().compareTo(vehicles[x - 1].getMake()) < 0 ||
   (vehicles[x].getMake().compareTo(vehicles[x - 1].getMake()) == 0 &&
    vehicles[x].getModel().compareTo(vehicles[x - 1].getModel()) < 0)) {

07-26 05:17