Java中对象数组的气泡排序

Java中对象数组的气泡排序,java,arrays,object,bubble-sort,Java,Arrays,Object,Bubble Sort,如何对对象数组进行排序?这是我对数组排序的代码,我收到一个“nota statement”错误:Movie temp=movies[b];我如何声明temp变量,就好像它要保存movies[b]的精确值/引用一样;哪一种可以是同一数组中三种不同对象类型中的任意一种?我是编程新手,所以如果我似乎无知,我道歉;如果我的措辞不正确,请随时纠正我或提出问题 public static String bubbleSort(Movie[] movies) { for (int a=1; a<m

如何对对象数组进行排序?这是我对数组排序的代码,我收到一个“nota statement”错误:Movie temp=movies[b];我如何声明temp变量,就好像它要保存movies[b]的精确值/引用一样;哪一种可以是同一数组中三种不同对象类型中的任意一种?我是编程新手,所以如果我似乎无知,我道歉;如果我的措辞不正确,请随时纠正我或提出问题

public static String bubbleSort(Movie[] movies) {
    for (int a=1; a<movies.length; a++) {
        for(int b=0; b<movies.length - a; b++) {
            if (((movies[b].getTitle()).compareTo((movies[b+1].getTitle()))) > 0)
                //swap movies[b] with movies[b+1]
                Movie temp = movies[b];
            movies[b] = movies[b+1];
            movies[b+1] = temp;
        }
    }
}
公共静态字符串bubbleSort(电影[]电影){

对于(int a=1;a当数组被定义为
Movie[]
时,它只能包含
Movie
类型的对象。因此,您只能在其中包含
Movie
对象。但是,为了使其通用,您应该将类型定义为
Object
并将数组定义为
Object[]


但是,在代码中,您假设确实有
Movie
对象,因为您使用的是
Movie.getTitle()
。您将无法从
对象的引用中访问它。我建议让您的对象实现
可比
,并使用类型
可比
作为数组和临时变量的类型。

使用集合api,不要重新发明轮子来执行您自己的排序实现on.

电影温度=电影[b];
是一个声明,而不是一个声明。您想要:

        if (((movies[b].getTitle()).compareTo((movies[b+1].getTitle()))) > 0)
        {
            //swap movies[b] with movies[b+1]
            Movie temp = movies[b];
            movies[b] = movies[b+1];
            movies[b+1] = temp;
        }

请注意,我所做的只是在所有交换代码周围添加大括号,使其成为一个可以包含声明的块。我认为这是您的意图,但只是省略了大括号。

测试后缺少一个{,并且错误地承诺返回字符串。请尝试此操作

public static void bubbleSort(Movie[] movies) {
    for (int a = 1; a < movies.length; a++) {
        for (int b = 0; b < movies.length - a; b++) {
            if (((movies[b].getTitle())
                    .compareTo((movies[b + 1].getTitle()))) > 0) {
                // swap movies[b] with movies[b+1]
                Movie temp = movies[b];
                movies[b] = movies[b + 1];
                movies[b + 1] = temp;
            }
        }
    }
}
publicstaticvoidbubblesort(电影[]电影){
对于(int a=1;a0){
//将电影[b]与电影[b+1]交换
电影温度=电影[b];
电影[b]=电影[b+1];
电影[b+1]=临时工;
}
}
}
}

您需要在
if
子句后面的3条语句周围加上括号。如果没有括号,则只有子句-
Movie temp=movies[b]后面的第一条语句
-将有条件地执行。其他两条语句将始终执行。自行实现算法是学习语言和算法的好方法。继续,重新发明所有你想要的轮子!虽然是真的,但它可能不会让你在现实世界中练习该语言。最好每天学习你将使用的APIut喜欢Collections API。但是如果你只是想学习语言,那当然可以。即使这样,也可能有比bubble sort更好的事情……如果它的家庭作业应该这样标记。我们应该这样做吗?谢谢你提供的信息。写这篇文章的目的确实是学习语言!当涉及到Java学习语言时VERY wide extend正在学习使用核心API,这就是我建议查看collections API的原因。在掌握Java语言的诀窍的同时尽快这样做。是的!就是这样,我真的明白了,然后回来删除了这篇文章。非常感谢您的快速回复!我非常感谢您!下次您访问时在这种情况下,通过将方法简化为单个语句/表达式或控制结构来解决此问题,然后一次只重新添加一部分代码,直到出现编译错误。您很快就会跨过这一阶段,获得更大的荣誉!非常感谢您的快速响应。非常有用。正是我所需要的!