我正在Java中構建一個CLI調查應用程序,讓用戶回答多項選擇題。請告訴我如何改進我的方法。在這種情況下保存響應集的更好方法是什麼?
對問題的每個答案都記錄爲一個int,它是該問題的選項數組中該選項的索引。調查的所有答案都保存爲一個int數組。我正在考慮使用ObjectOutputStream序列化這個int數組。然後,當我需要顯示結果時,我將恢復數組並在選項卡後打印每個元素。
這種方法的問題是(我相信)第二組響應會覆蓋第一組。我想到了兩種選擇,這兩種選擇聽起來都不錯。一種是將每個響應設置爲單獨的文件。但是,然後顯示時間,我將不得不一次讀取所有文件,以便一起回答相同的問題。另一種方法是將int數組保存爲純文本文件中的製表符分隔行(因此每個響應集都會創建一個新行),然後將其標記並解析爲int數組進行顯示。但然後令牌化/解析代碼是一個恐怖閱讀(目前看起來像這樣):
編輯:哎呀,這個代碼是不是正確的。我的觀點只是解析是一團糟,所以我正在尋找一種不需要解析的方法。
File savedResults = new File(Main.surveyResultsFolder, surveyFileName);
try {
BufferedReader br = new BufferedReader(new FileReader(savedResults));
int[] currentResponseSet = new int[noOfQuestions];
String currentResponseString = "";
String[] currentResponseStrArray = null;
while((currentResponseString = br.readLine()) != null) {
currentResponseStrArray = currentResponseString.split("\t");
for (int i = 0; i < currentResponseStrArray.length; i++) {
currentResponseSet[i] = Integer.parseInt(currentResponseStrArray[i]);
}
}
//then I'll print currentResponseSet here.
}
catch (IOException ex) {
System.out.println("Error reading results file " + surveyFileName);
}
我沒有想法。正如你所看到的,我對數據處理技術的瞭解是有限的。任何接受者?
這聽起來像是一個很好的解決方案!如果我被要求改進上面的代碼,我一定會用它:) – 2010-09-25 15:49:18