Java按字母顺序排序,看起来应该可以工作,但不能

Java按字母顺序排序,看起来应该可以工作,但不能,java,Java,我在我的气泡排序方程中有这个计算,但它似乎不起作用,我可以找出原因 这是我的同类课 System.out.println("\r" + "In order by title"); for (int out = 0; out < bookList.size(); out++) { for (int in = 0; in < bookList.size() - 1; in++) if (bookList.get(in).getTitle().compareTo(

我在我的气泡排序方程中有这个计算,但它似乎不起作用,我可以找出原因

这是我的同类课

System.out.println("\r" + "In order by title");
for (int out = 0; out < bookList.size(); out++) {
    for (int in = 0; in < bookList.size() - 1; in++) 
        if (bookList.get(in).getTitle().compareTo(bookList.get(in + 1).getTitle()) < 0) {
            Book temp = bookList.get(in);
            bookList.set(in, bookList.get(in+1));
            bookList.set(in+1, temp);        
        }    

        System.out.println(bookList.get(out).getTitle() + "   " + bookList.get(out).getRating());
}
}
班级:图书馆

import java.util.ArrayList;

public class Library {

public static void main (String [] args) {

    ArrayList<Book> bookList = new ArrayList<Book>();

    Book b1 = new Book ("Huckleberry Finn", 5);
    Book b2 = new Book ("The Great Gadsby", 2);
    Book b3 = new Book ("Harry Potter", 3);
    Book b4 = new Book ("Animal Farm", 4);
    Book b5 = new Book ("The Mist", 1);
    bookList.add(b1);
    bookList.add(b2);
    bookList.add(b3);
    bookList.add(b4);
    bookList.add(b5);
    System.out.println("Original sequence");

    for (int cnt = 0; cnt < videoList.size(); cnt++) {
        System.out.println(bookList.get(cnt).getTitle() + "   " + bookList.get(cnt).getRating());

 Sort sortObject = new Sort();
 sortObject.calc(bookList);

    }
}
}   

通过实现Comparable和compareTo方法,然后使用Collections.SortaryList,您可以轻松地对集合进行排序

例:


现在,您可以按以下方式对arraylist进行排序:Collections.sortbookList

在以下情况下缺少括号:

for (int in = 0; in < bookList.size() - 1; in++) 
您的代码应该是这样的:

System.out.println("\r" + "In order by title");
for (int out = 0; out < bookList.size(); out++) {
    for (int in = 0; in < bookList.size() - 1; in++) {
        if (bookList.get(in).getTitle().compareTo(bookList.get(in + 1).getTitle()) < 0) {
            Book temp = bookList.get(in);
            bookList.set(in, bookList.get(in+1));
            bookList.set(in+1, temp);        
        }
    }
}
System.out.println("Ordered list of books:");
for (int i = 0; out < bookList.size(); i++) {
    System.out.println(bookList.get(out).getTitle() + "   " + bookList.get(out).getRating());
}

无论如何,您应该真正学习如何实现和使用Comparable。这将使你未来的生活更加轻松。

Books。我要按字母顺序排列。更具体地说,是ArrayList。抱歉,重新编辑。我在主类中有一个对象,它在我的Sort类中使用calc函数。它正在打印,只是没有分类。很好,现在我们有进展了。您需要找到一个好的调试器,并使用它来查看calc方法中发生了什么。在for循环中,您不使用变量out。尝试用out替换in+1。有什么方法可以编辑我提到的行以使其工作吗?我想那会有用的。只要实现comparable和compareTo方法,它就可以与您现有的代码一起工作;在您想要打印itOk之前,使用main方法,但这仍然算作冒泡排序吗?
public class Book implements Comparable<Book>
{
   String title;
    ......

   public int compareTo(Book other)
   {
      return title.compareTo(other.title);
   }
}
for (int in = 0; in < bookList.size() - 1; in++) 
System.out.println(bookList.get(out).getTitle() + "   " + bookList.get(out).getRating());
System.out.println("\r" + "In order by title");
for (int out = 0; out < bookList.size(); out++) {
    for (int in = 0; in < bookList.size() - 1; in++) {
        if (bookList.get(in).getTitle().compareTo(bookList.get(in + 1).getTitle()) < 0) {
            Book temp = bookList.get(in);
            bookList.set(in, bookList.get(in+1));
            bookList.set(in+1, temp);        
        }
    }
}
System.out.println("Ordered list of books:");
for (int i = 0; out < bookList.size(); i++) {
    System.out.println(bookList.get(out).getTitle() + "   " + bookList.get(out).getRating());
}