0

此方法的目的是根据人的 ID 进行冒泡排序

但是在这个领域:

if (al.get(i).compareTo(al.get(i+1)) > 0 )

它指出:找不到符号 - 方法 compareTo(java.lang.Object)


这是班上的人(不是很小鬼)////

public class Person implements java.io.Serializable
{
  String personID;
  String name;
  byte dayDOB;
  byte monthDOB;
  short yearDOB;
  String telNum;
}

这是排序方法:

public static void sort(ArrayList al)
  {
   Person p;
   String temp;
   boolean flag = true;

   System.out.println("Database will be sorted acc to ID ");
   System.out.println();


    while (flag = true)
    {
        flag = false;

        for (int i=0;i<al.size()-1;i++)    
        {
            p = (Person) al.get(i);

            if (al.get(i).compareTo(al.get(i+1)) > 0 )
            {
                temp = al.get(i);
                al.set(i,al.get(i+1) );
                al.set(i+1, temp);
                flag = true;
            }
        }
    }
    }

附言; 在代码方面,我是新手,并且已经修改此代码长达 7 小时

4

1 回答 1

0

对象带有内置的 compareTo() 方法,但最好覆盖默认值。 请参阅 .java 文档compareTo()。这应该会大大简化您的代码。

您的 Person 类将需要实现 Comparable 并将其包含在类声明中。然后,您可以编写compareTo()如下方法:

public int compareTo(Person b) {
   return this.name.compareTo(b.getName());
}

一个compareTo()方法应该返回 -1、0 或 1。如果a.compareTo(b)在主类中调用,compareTo()如果对象被排序到相同的位置(即相等),则返回零,如果对象 a 应该在对象 b 之前排序,则返回 -1,或者1 如果对象 a 应该排在 b 之后。

您需要确定同一个人的构成以及应如何对他们进行排序。根据名字的字母顺序?姓名和身份证?无论您的程序是什么。

于 2016-01-05T16:47:22.680 回答