0
现在我有一个二进制文件,它充满了5组问题,答案和点值。我需要从二进制文件中挑选一个随机问题及其匹配答案和分值,并将其打印出来。我怎么去做这件事,因为与二进制文件,我不认为我可以只使用nextLine()
等等。任何帮助表示赞赏,谢谢!从二进制文件中读取和打印一个随机元素
import java.io.*;
public class Trivia implements Serializable {
private String question;
private String answer;
private int points;
public Trivia() {
question = " ";
answer = " ";
points = 0;
}
public String getQuestion() {
return question;
}
public String getAnswer() {
return answer;
}
public int getPoints() {
return points;
}
public void setQuestion(String q) {
question = q;
}
public void setAnswer(String a) {
answer = a;
}
public void setPoints(int p) {
points = p;
}
}
import java.io.*;
import java.util.*;
public class Driver {
public static void main(String[] args) {
Trivia[] t = new Trivia[5];
for (int i = 0; i < 5; i++) {
t[i] = new Trivia();
}
t[0].setQuestion("How many states are in the US?");
t[0].setAnswer("50");
t[0].setPoints(1);
t[1].setQuestion("Who is the richest person in the US");
t[1].setAnswer("You");
t[1].setPoints(1);
t[2].setQuestion("How many senators come from each state?");
t[2].setAnswer("2");
t[2].setPoints(2);
t[3].setQuestion("What is the largest state?");
t[3].setAnswer("Alaska");
t[3].setPoints(2);
t[4].setQuestion("Who was the thrid president?");
t[4].setAnswer("Thomas Jefferson");
t[4].setPoints(3);
ObjectOutputStream outputStream = null;
try {
outputStream = new ObjectOutputStream(new FileOutputStream("trivia.dat"));
} catch (IOException e) {
System.out.println("Could not open file");
System.exit(0);
}
try {
outputStream.writeObject(t);
outputStream.close();
} catch (IOException e) {
System.out.println("Writing error");
System.exit(0);
}
ObjectInputStream inputStream = null;
try {
inputStream = new ObjectInputStream(new FileInputStream("trivia.dat"));
} catch (IOException e) {
System.out.println("File not found.");
System.exit(0);
}
Trivia[] test = null;
try {
test = (Trivia[]) inputStream.readObject();
} catch (Exception e) {
System.out.println("Reading error");
System.exit(0);
}
}
ArrayList<Trivia> triviaQuestions = new ArrayList<Trivia>(5);
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("trivia.dat"));
triviaQuestions.add((Trivia) ois.readObject()); // This should be repeated (looped) until all questions are read
}
下面是二进制文件的截图: http://imgur.com/a/zask2
你是什么意思的名单做? – ProgrammingGuy123
例如,ArrayList:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html – masinger
啊,好的。这就是我所倾向的。我怎么会从文件中的信息拉到数组列表?因为该文件中的信息只是二进制jibberish – ProgrammingGuy123