我的问题是如果类型是多个字符ex:Spy或Humor,我如何使用char字段来描述类型。由于char只有1个字符,这是如何工作的?
我的小说类中需要一个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 Thunderball 245间谍
0 Goldeneye 289间谍
1架飞机456航空250
0 Jocularity 198幽默
1足球434运动400
1 Golf 432 Sports 307
我想要这个输出:
名称:Thunderball页数:245类型:间谍
姓名:Goldeneye页数:289类型:间谍
名称:飞机页数:456主题:航空插图:250
姓名:Jocularity页数:198类型:幽默
姓名:足球页数:434主题:体育插图:400
姓名:高尔夫页数:432主题:体育插图:307
总页数:2054
答案 0 :(得分:1)
java中的char只能包含一个字符。在这种情况下有两种选择,
1)将类型从char更改为String,以便它可以包含多个字符,如Humor等。
2)将类型的类型更改为char []
答案 1 :(得分:0)
是的,Scanner类(您用于阅读)提供函数 nextLine(),它返回String。这可能是你正在寻找的。当然,在这种情况下,文件“books.dat”的组织方式应该是每个标题都在一个单独的行上。
实际上我更喜欢 DataInputStream 和 DataOutputStream ,它们具有 writeUTF()和 readUTF()用于读取/写字符串。
DataInputStream reader = new DataInputStream(new FileInputStrean(fileName));
然后
int a = reader.readInt();
String genre = reader.readUTF();
等