【发布时间】:2011-04-16 21:14:57
【问题描述】:
我正在用 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);
}
我没有想法。如您所见,我对数据处理技术的了解有限。有接盘侠吗?
【问题讨论】: