當你到那裏你必須做出對數據層次二維陣列中的點,你應該建立一個明智的模式。
這裏是你(丟棄的打字速度制定者),快速(和骯髒的)模型:
問卷類:
/**
* Facilitates an entire questionnaire
*/
public class Questionnaire extends ArrayList<Question> {
/**
* This questionnaire's name
*/
private String name;
/**
* Creates a new questionnaire using the specified name
* @param name The name of this questionnaire
*/
public Questionnaire(String name) {
this.name = name;
}
/**
* Returns the name of this questionnaire
*/
public String getName() {
return name;
}
}
問題類:
/**
* Facilitates a question and its answers
*/
public class Question extends ArrayList<Answer> {
/**
* The question's text
*/
private String text;
/**
* Constructs a new question using the specified text
* @param text The question's text
*/
public Question(String text) {
this.text = test;
}
/**
* Returns this question's text
*/
public String getText() {
return text;
}
}
回答類:
/**
* Facilitates an answer
*/
public class Answer {
/**
* The answer's text
*/
private String text;
/**
* Whether or not this answer is correct
*/
private boolean correct;
/**
* Constructs a new answer using the specified settings
* @param text The text of this answer
* @param correct Whether or not this answer is correct
*/
public Answer(String text, boolean correct) {
this.text = text;
this.correct = correct;
}
/**
* Returns this answer's text
*/
public String getText() {
return text;
}
/**
* Whether or not this answer is correct
*/
public boolean isCorrect() {
return correct;
}
}
使用它會是如下:
// Create a new questionnaire
Questionnaire questionnaire = new Questionnaire("The awesome questionnaire");
// Create a question and add answers to it
Question question = new Question("How awesome is this questionnaire?");
question.add(new Answer("It's pretty awesome", false));
question.add(new Answer("It's really awesome", false));
question.add(new Answer("It's so awesome my mind blows off!", true));
// Add the question to the questionnaire
questionnaire.add(question);
遍歷它是非常容易的:
// Iterate over the questions within the questionnaire
for(Question question : questionnaire) {
// Print the question's text
System.out.println(question.getText());
// Go over each answer in this question
for(Answer answer : question) {
// Print the question's text
System.out.println(answer.getText());
}
}
你也可以遍歷只是其中的一部分:
// Iterate over the third to fifth question
for (int questionIndex = 2; questionIndex < 5; questionIndex ++) {
// Get the current question
Question question = questionnaire.get(questionIndex);
// Iterate over all of the answers
for (int answerIndex = 0; answerIndex < question.size(); answerIndex++) {
// Get the current answer
Answer answer = question.get(answerIndex);
}
}
讀取文件使用您所描述的格式進入模型可以通過以下方式完成:
// Create a new questionnaire
Questionnaire questionnaire = new Questionnaire("My awesome questionnaire");
// Lets scan the file and load it up to the questionnaire
Scanner scanner = new Scanner(new File("myfile.txt"));
// Read lines from that file and split it into tokens
String line, tokens[];
int tokenIndex;
while (scanner.hasNextLine() && (line = scanner.nextLine()) != null) {
tokens = line.split(",");
// Create the question taking the first token as its text
Question question = new Question(tokens[0]);
// Go over the tokens, from the first index to the one before last
for (tokenIndex = 1; tokenIndex < tokens.length-1; tokenIndex++) {
// Add the incorrect answer to the question
question.add(new Answer(tokens[tokenIndex], false));
}
// Add the last question (correct one)
question.add(new Answer(tokens[tokenIndex],true));
}
// Tada! questionnaire is now a complete questionnaire.
你能告訴我們你試過了什麼嗎? – Maroun 2013-04-07 18:03:23
你可以使用第三方庫嗎?否則,你是否需要考慮轉義和引用? – 2013-04-07 18:05:33
我一直在[link](http://beginwithjava.blogspot.co.uk/2011/05/java-csv-file-reader.html)使用一個簡單的CSV閱讀教程,但我立即遇到問題,因爲我想要一個多維數組,並且你甚至不知道它會有多少行就可以聲明其中的一個。 – Tairi 2013-04-07 18:07:58