【发布时间】:2020-05-24 11:01:00
【问题描述】:
我必须接受用户输入(int id、String title、String 文件夹、int pages)。我必须按字符串标题(字典)的升序获取输出。我已经写了代码,但是我的输出是完全不同的。
package zzz;
import java.util.Scanner;
import java.util.Arrays;
import java.util.Collections;
class Book{
int id;
String title;
String folder;
int pages;
}
public class practice {
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
Book b1 = new Book();
Book b2 = new Book();
Book b3 = new Book();
Book b[]= {b1,b2,b3};
for(int i=0;i<b.length;i++) {
b[i].id=sc.nextInt();
sc.nextLine();
b[i].title=sc.next();
sc.nextLine();
b[i].folder=sc.next();
b[i].pages=sc.nextInt();
}
Book temp = null;
for(int i=0;i<b.length;i++) {
for(int j=0;j<b.length-1-i;j++) {
if(b[i].title.compareTo(b[j].title)<0) {
temp =b[j];
b[j]=b[j+1];
b[j+1]=temp;
}}
}
for(int i=0;i<b.length;i++) {
System.out.println(b[i].id+" "+b[i].title+" "+b[i].folder+" "+b[i].pages);
}
}}
【问题讨论】:
-
Book 类是否为其标题分配了默认值?
-
@Bohemian,不,它没有
-
那么您的问题是 title 为 null 并且您正在对 null 对象调用
compareTo()方法。
标签: java arrays string class sorting