PrintStream неожиданно переходит на новую строку?
Я не могу понять, почему мой код заставляет PrintStream перейти на новую строку:
// displays the total time of the leak in months from the calculateLeakTime() method.
String leakTime = LeakCalculator.calculateLeakTime();
System.out.println("The total time of the leak is " + leakTime + " months.");
Вывод выглядит так:
"Общее время утечки составляет 12
месяцы."
Я не могу понять, почему месяцы печатаются на новой строке. Я даже попробовал это:
// displays the total time of the leak in months from the calculateLeakTime() method.
String leakTime = LeakCalculator.calculateLeakTime();
System.out.print("The total time of the leak is " + leakTime);
System.out.println(" months.");
И я получил такой же вывод. Может кто-нибудь объяснить, почему он переносит "месяцы" на новую строку?
Спасибо,
Kevin
РЕДАКТИРОВАТЬ: Вот метод calculatLeakTime():
static String calculateLeakTime() throws ParseException{
long leakEndMili = getLeakEnd();
long leakBeginMili = getLeakBegin();
long timeDays = ((leakEndMili - leakBeginMili) / (1000 * 60 * 60 * 24));
double timeMonths = (double) (timeDays * 0.0328549);
System.out.println(timeMonths);
String monthsRounded = String.format("%.0f%n", timeMonths);
return monthsRounded;
}
2 ответа
Удалите "%n" из следующей строки:
String monthsRounded = String.format ("%. 0f% n", timeMonths);
Это делает это, потому что ваш LeakCalculator.calculateLeakTime()
метод добавляет перевод строки, "\n"
до конца строки, которую он возвращает. Чтобы сказать наверняка, распечатайте отдельные символы, которые составляют возвращенную строку.
Чтобы решить эту проблему, исправьте LeakCalculator.calculateLeakTime()
метод, чтобы он не добавлял перевод строки к возвращенной строке. Возможно, он должен возвращать число, а не строку.
редактировать
Вы заявляете:
Я подозреваю, что это формат проблемы ("%.0f%n", timeMonths)
Ну да, %n
это символ новой строки.