我正在用 Java 构建一个 CLI 调查应用程序,让用户可以回答多项选择题。请告诉我如何改进我的方法。
问题的每个答案都记录为一个整数,它是该选项在该问题的选项数组中的索引。调查的所有答案都保存为一个 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);
}
我没主意了。如您所见,我对数据处理技术的了解有限。有没有人要?
最佳答案
最明显的做法是将其保存到数据库中。然后存储和检索就非常简单了。
如果您出于某种原因无法做到这一点,那么我认为您目前的解决方案就是可行的方法。你的解析代码对我来说看起来很简单。我会创建一个单独的函数来解析一行,该行返回一行的响应数组,然后让调用者做任何需要做的事情,只是为了干净的模块化。
关于java - 在这种情况下保存响应集的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3789037/