Я немного объясню, что делает программа: она просто получает файл JSON с психологическим или другим видом теста и вносит исправления. Вы можете создать тест с различными областями или подмножествами с их собственной коррекцией, а процентные соотношения будут соответствовать общему. Позже он спрашивает пользователя, хотят ли они сохранить данные в файле xsls для дальнейшего анализа.
Я пытаюсь заполнить и превзойти некоторую информацию о пользователе. Дело в том, что я получаю только последний ответ и оценку каждого подмножества. Кажется, что строки перезаписываются или что-то в этом роде.
Какой-то код:
Этот метод называется:
public void subsetWriter(String userName, RandomTest t, Corrector c) {
Workbook subsetWorkbook = new XSSFWorkbook();
Sheet sheet = subsetWorkbook.createSheet(userName);
styleCreation(sheet);
Row headerRow = sheet.createRow(0);
Row titleRow = sheet.createRow(1);
for (int i = 2; i < t.getQuestions().size() + 2; i++) {
punctuations = sheet.createRow(i);
}
Cell subsetHeader;
Cell scoreTitle;
Cell answerTitle;
sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 2));
sheet.addMergedRegion(new CellRangeAddress(0, 0, 3, 4));
sheet.addMergedRegion(new CellRangeAddress(0, 0, 5, 6));
int plusTwoCounter = -1;
for (int i = 0; i < c.getSubsetNames().size(); i++) {
subsetHeader = headerRow.createCell(plusTwoCounter + 2);
subsetHeader.setCellValue(c.getSubsetNames().get(i));
subsetHeader.setCellStyle(headerStyle);
scoreTitle = titleRow.createCell(plusTwoCounter + 2);
scoreTitle.setCellValue(COLUMN1);
scoreTitle.setCellStyle(titleStyle);
answerTitle = titleRow.createCell(plusTwoCounter + 3);
answerTitle.setCellValue(COLUMN2);
answerTitle.setCellStyle(titleStyle);
fillSubset(i, t.getSubsets().get(c.getSubsetNames().get(i)), t.getSubsets().get(c.getSubsetNames().get(i)), punctuations);
plusTwoCounter += 2;
}
rowResization(sheet, 1, 7);
saveFile(subsetWorkbook, userName);
}
Метод помощника c чтобы заполнить подмножества:
private static void fillSubset(int subsetPosition, ArrayList<Question> scores, ArrayList<Question> answers, Row punctuations) {
Integer[] scorePositions = {1, 3, 5, 7, 9};
Integer[] answerPositions = {2, 4, 6, 8, 10};
Cell scoreCell;
Cell answerCell;
for (int j = 0; j < scores.size(); j++) {
scoreCell = punctuations.createCell(scorePositions[subsetPosition]);
scoreCell.setCellValue(scores.get(j).getScore());
answerCell = punctuations.createCell(answerPositions[subsetPosition]);
answerCell.setCellValue(answers.get(j).getUserAnswer());
}
}
Оценка и ответ являются атрибутами класса Вопроса, эти списки объектов Вопроса получены из HashMap, который содержит имя подмножества и соответствующий им список вопросов.
Надеюсь, я дал понять, заранее большое спасибо!