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