Вы должны открыть свой PrintWriter
один раз , а затем много раз писать в него из цикла, а не наоборот:
try (PrintWriter output = new PrintWriter(file)) {
for (int i = 1; i <= 1000; i++) {
firstName = "FirstName" + i;
lastName = "LastName" + i;
rank = generateRandomRank();
if (rank == "assistant")
salaryRange = generateSalary(50000.00, 80000.00);
else if (rank == "associate")
salaryRange = generateSalary(60000.00, 110000.00);
else
salaryRange = generateSalary(75000.00, 130000.00);
output.printf("%s %s %s $%.2f", firstName, lastName, rank, salaryRange);
output.println();
}
}
Вам следует использовать приведенный выше шаблонвместо того, что у вас есть.Если вам нужно точное исправление к текущему коду, попробуйте открыть PrintWriter
в режиме добавления:
for (int i=1; i <= 1000; i++) {
try (PrintWriter output = new PrintWriter(new FileOutputStream(file, true)) {
// same logic
}
}
Это также должно работать, потому что теперь, даже если вы создаете новый PrintWriter
для каждой итерации цикла (неэффективно) вы открываете базовый файл в режиме append , поэтому каждая новая строка должна записываться правильно.