Je construis une application de sondage CLI en Java qui permet aux utilisateurs de répondre à des questions à choix multiples. S'il vous plaît dites-moi comment mon approche peut être améliorée.Quelle est la meilleure façon de sauvegarder les ensembles de réponses dans cette situation?
Chaque réponse à une question est enregistrée comme int, qui est l'indice de ce choix dans le tableau de choix pour cette question. Toutes les réponses à un sondage sont sauvegardées dans un tableau int. Je pense à sérialiser ce tableau int en utilisant ObjectOutputStream. Ensuite, lorsque j'ai besoin d'afficher les résultats, je vais restaurer le tableau et imprimer chaque élément après un onglet.
Le problème avec cette approche est (je crois) que le second ensemble de réponses écrase le premier. J'ai pensé à deux alternatives, qui ont toutes deux l'air mauvaises. L'un consiste à enregistrer chaque jeu de réponses dans un fichier distinct. Mais alors venez afficher l'heure, je vais devoir lire tous les fichiers à la fois pour garder les réponses à la même question ensemble. L'autre sauvegarde le tableau int sous la forme d'une ligne séparée par des tabulations dans un fichier de texte brut (de sorte que chaque ensemble de réponses crée une nouvelle ligne), puis de l'analyser par token et de l'analyser dans un tableau int pour l'afficher. Mais alors le code tokenizing/parsing est une horreur à lire (actuellement il ressemble à ceci):
EDIT: Oups, ce code n'est même pas correct. Mon point est juste que l'analyse est un gâchis, donc je cherche un moyen de ne pas avoir à analyser.
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);
}
Je suis à court d'idées. Comme vous pouvez le voir, ma connaissance des techniques de traitement des données est limitée. N'importe quels preneurs?
Cela ressemble à une bonne solution! Si je suis appelé à améliorer le code ci-dessus, je serai sûr de l'utiliser :) –