gpt4 book ai didi

java - 使用 printf 格式化表格

转载 作者:行者123 更新时间:2023-12-02 11:58:59 26 4
gpt4 key购买 nike

我正在尝试使用 printf 输出格式化字符串。问题涉及银行系统。我有一个 Transaction 类型的 ArrayList,其中包含 id、交易金额、确定是存款还是取款的字符串以及帐户余额。

首先,程序打印了4列,没有问题

System.out.printf("%-20s%-20s%-20s%s\n","交易","提现","充值","余额");

然后我尝试迭代 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

但是,它随后打印出一系列我无法理解的错误

Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier '%d' at java.util.Formatter.format(Unknown Source) at java.io.PrintStream.format(Unknown Source) at java.io.PrintStream.printf(Unknown Source) at Account.printStatement(Account.java:87) at Account.main(Account.java:43)

非常感谢任何帮助。谢谢!

最佳答案

这实际上意味着您有一个 %d 没有对应的值:

System.out.printf("%-20d%-40d%-20d%d\n", d.get(i).id, d.get(i).amount, d.get(i).balance);

您有 4 个格式说明符和 3 个值。

%-20d
%-40d
%-20d
%d

值(value)观:

d.get(i).id
d.get(i).amount
d.get(i).balance

关于java - 使用 printf 格式化表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com