Я создаю приложение для опроса CLI на Java, которое позволяет пользователям отвечать на вопросы с несколькими вариантами ответов.Пожалуйста, скажите мне, как мой подход может быть улучшен.
Каждый ответ на вопрос записывается в виде целого числа, которое является индексом этого выбора в массиве вариантов ответа на этот вопрос.Все ответы на опрос сохраняются в виде массива int.Я думаю о сериализации этого массива int с помощью ObjectOutputStream.Затем, когда мне понадобится отобразить результаты, я восстановлю массив и напечатаю каждый элемент после вкладки.
Проблема с этим подходом состоит в том (я полагаю), что второй набор ответов перезаписывает первый.Я подумал о двух альтернативах, оба из которых звучат плохо.Каждый сохраняет каждый набор ответов в отдельный файл.Но вот пришло время показа, мне нужно будет прочитать все файлы одновременно, чтобы сохранить ответы на один и тот же вопрос.Другой - сохранение массива 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);
}
У меня нет идей.Как видите, мои знания о методах обработки данных ограничены.Любой берущий?