Я пытаюсь вывести форматированную строку, используя printf
. Проблема касается банковской системы. У меня есть ArrayList типа Transaction, который содержит идентификатор, сумму транзакции, строку, определяющую, является ли это депозитом или снятием средств, и баланс на счете.
Сначала программа печатает 4 столбца без проблем.
System.out.printf("%-20s%-20s%-20s%s\n","Transaction","Withdrawal","Deposit", "Balance");
Затем я пытаюсь выполнить итерацию по ArrayList и распечатать информацию о каждой транзакции. Оператор if используется для определения того, какая транзакция выполняется, а затем я пытаюсь выровнять сумму в правильном столбце в зависимости от того, был ли это депозит или снятие средств.
for(int i= 0; i < d.size(); i++) {
if(d.get(i).type.equals("Deposit")) {
System.out.printf("%-20d%-40d%-20d%d\n", d.get(i).id, d.get(i).amount, d.get(i).balance);
}else {
System.out.printf("%-20d%-20d%-40d%d\n", d.get(i).id, d.get(i).amount, d.get(i).balance);
}
}
На самом деле кажется, что первая строка отлично распечатывается:
Transaction Withdrawal Deposit Balance
0 7 1007
Однако затем он распечатывает серию ошибок, которые я не могу понять.
Исключение в потоке "main" java.util.MissingFormatArgumentException: спецификатор формата "%d" в java.util.Formatter.format(неизвестный источник) в java.io.PrintStream.format(неизвестный источник) в java.io.PrintStream.printf (Неизвестный источник) в Account.printStatement(Account.java:87) в Account.main(Account.java:43)
Любая помощь будет принята с благодарностью. Спасибо!
if
else
тоже не имеет особого смысла, как сейчас. ПервыйSystem.out.printf
, вероятно, должен содержать депозит. 20.11.2017