Java 什么';在这种情况下,保存响应集的更好方法是什么?
我正在用Java构建一个CLI调查应用程序,它允许用户回答多项选择题。请告诉我如何改进我的方法 每个问题的答案都记录为int,int是该问题选项数组中该选项的索引。调查的所有答案都保存为整数数组。我正在考虑使用ObjectOutputStream序列化这个int数组。然后,当我需要显示结果时,我将恢复数组并在选项卡后打印每个元素 这种方法的问题是(我相信)第二组回答覆盖了第一组。我想到了两个选择,两个听起来都很糟糕。一种是将每个响应集保存到单独的文件中。但到了显示时间,我必须一次读取所有文件,以便将同一个问题的回答放在一起。另一种方法是将int数组保存为纯文本文件中以制表符分隔的行(因此每个响应集生成一个新行),然后标记并将其解析回int数组以显示。但是标记化/解析代码读起来很恐怖(目前看起来是这样的): 编辑:哎呀,这个代码根本不对。我的观点是,解析是一团糟,所以我正在寻找一种不必解析的方法Java 什么';在这种情况下,保存响应集的更好方法是什么?,java,arrays,save,Java,Arrays,Save,我正在用Java构建一个CLI调查应用程序,它允许用户回答多项选择题。请告诉我如何改进我的方法 每个问题的答案都记录为int,int是该问题选项数组中该选项的索引。调查的所有答案都保存为整数数组。我正在考虑使用ObjectOutputStream序列化这个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);
}
File savedResults=新文件(Main.surveyResultsFolder,surveyFileName);
试一试{
BufferedReader br=新的BufferedReader(新文件读取器(savedResults));
int[]currentResponseSet=新int[noOfQuestions];
字符串currentResponseString=“”;
字符串[]CurrentResponseStrray=null;
while((currentResponseString=br.readLine())!=null){
CurrentResponseStrray=currentResponseString.split(“\t”);
对于(int i=0;i
我没有主意了。如您所见,我对数据处理技术的知识有限。有人吗?最明显的做法是将其保存到数据库中。那么存储和检索就非常简单了
如果你出于任何原因不能做到这一点,那么我认为你目前的解决方案是可行的。我觉得你的解析代码很简单。我将创建一个单独的函数来解析一行,该行返回一行的响应数组,然后让调用者用它做任何需要做的事情,只是为了干净的模块化。最明显的做法是将它保存到数据库中。那么存储和检索就非常简单了 如果你出于任何原因不能做到这一点,那么我认为你目前的解决方案是可行的。我觉得你的解析代码很简单。我将创建一个单独的函数来解析一行,该行返回一行的响应数组,然后让调用者用它做任何需要做的事情,只是为了干净的模块化。几点:
地图
。您可以在此处找到有用的“自动映射”结构:地图
。您可以在此处找到有用的“自动映射”结构:谢谢我不使用数据库的唯一原因是因为我不知道如何使用数据库:“>@Anita:好吧,如果你想寻求一个快速、短期的答案,这是一个很好的理由。从长远来看,我建议你学习使用数据库!我不知道你的托管安排是什么, public abstract class AutoMap<K extends Comparable, V> extends TreeMap<K, V> { protected abstract V createValue(); public V getOrCreate(K key) { V value = get(key); if (value == null) { value = createValue(); put(key, value); } return value; } } public class MapOfMaps<J extends Comparable, K extends Comparable, V> extends AutoMap<J, Map<K, V>> { protected Map<K, V> createValue() { return new TreeMap<K, V>(); } }