package books;
import java.awt.List;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Book implements Comparable<Book>{
private String title;
private String author;
private int year;
public Book(String title, String author, int year){
this.title = title;
this.author = author;
this.year = year;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public int getYear() {
return year;
}
@Override
public String toString() {
return title + author + "("+ year + ")";
}
public static void getList(String file) throws IOException {
try {
ArrayList<Book> books= new ArrayList<Book>();
FileReader fr = new FileReader (file);
BufferedReader br = new BufferedReader(fr);
String line;
while((line=br.readLine())!=null) {
String [] entries =line.split(",");
//int [] entrie=line.split(",");
Book book = new Book( title[0], author [1], year[2]);
System.out.println(line);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main( String [] args ) throws IOException {
getList("books (2).csv");
}
我找不到答案,所以也许你们可以帮帮我,但我试图将书名,作者和年份的列表分开,然后按字母顺序排列。我试图将它们放入数组,但我认为我没有正确使用构造函数或其他东西。你有什么想法吗?
答案 0 :(得分:0)
您需要使用得到的"_geoloc":{"lat":xx.xxx,"lng":-xx.xxx}
来构建lat
:
lng
答案 1 :(得分:0)
您需要使用entries[]
数组中的元素来构造每个Book
对象:
while ((line = br.readLine()) != null) {
String [] entries = line.split(",");
Book book = new Book(entries[0], entries[1], Integer.parseInt(entries[2]));
books.add(book);
}
然后,假设您使用的是Java 8,则可以按标题直接对列表进行排序:
books.sort(Comparator.comparing(Book::getTitle,
Comparator.nullsFirst(Comparator.naturalOrder())));
答案 2 :(得分:0)
在您的代码上,您将String的3个拆分部分发送给构造函数,但是year应该是int。将其也更改为String即可使用。
您继承了Comparable接口,但是缺少比较功能,因此必须对其进行定义。
您的课程未关闭,请在末尾加上}
。
如果您的图书开始阅读,但阅读数据错误,则是因为:
while((line=br.readLine())!=null) {
String [] entries =line.split(",");
//int [] entrie=line.split(",");
Book book = new Book( title[0], author [1], year[2]);
System.out.println(line);
}
您使用的是对csv的幼稚理解。格式如下:https://tools.ietf.org/html/rfc4180#section-2
还有一个解析它的教程:https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
如果您整理的csv文件与您解析的格式匹配,则不会有问题。