我的问题是,如果流派是多个字符,例如:间谍或幽默,我如何使用 char 字段来描述流派。由于 char 只有 1 个字符,这是如何工作的?
我的 Novel 类中需要一个 char 字段,它可以描述小说的类型。
下面是我的代码,后面是我在文件“books.dat”中创建的随机数据
import java.util.ArrayList;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.File;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("books.dat");
Scanner s = new Scanner(file);
ArrayList<Book> books = new ArrayList<Book>();
while(s.hasNext()){
if(s.nextInt() == 0){//novels
//create novel book
Novel n = new Novel();
read(s, n);
n.code = 0;
Book.totalPages(n.pages);
books.add(n);
}
}
for(int i = 0; i < books.size(); i++){
print(books.get(i));
}
}
public static void read(Scanner sc, Novel no){
no.name = sc.next();
no.pages = sc.nextInt();
no.genre = sc.next().trim().charAt(0);
//Im having scanner take
//the first letter of the genre and record it,
//but there will be a problem when two genres
//start with the same letter, how can i distinguish between the two?
}
public static void print(Book b){
if(b.code == 0){
System.out.printf("Name:%-15s Pages:%-10d Genre:%-10s \n",
b.getName(), b.getPages() );
}
}
}
public class Book {
String name;
int pages;
int code;
static int total = 0;
public Book() {
pages = 0;
name = "";
code = -1;
}
public static void totalPages(int pages){
total += pages;
}
public int getPages(){
return pages;
}
public String getName(){
return name;
}
}
public class Novel extends Book {
public char genre;
public Novel(){
}
public char getGenre(){
return genre;
}
}
0 霹雳弹 245 间谍
0金眼289间谍
1 飞机 456 航空 250
0 诙谐 198 幽默
1 足球 434 体育 400
1 高尔夫 432 运动 307
我想要这个输出:
名称:Thunderball 页数:245 类型:间谍
名称:Goldeneye 页数:289 类型:间谍
名称:飞机 页数:456 主题:航空 插图:250
名称:诙谐页数:198 类型:幽默
名称:足球 页数:434 主题:体育 插图:400
名称:高尔夫 页数:432 主题:体育 插图:307
总页数:2054