所有其他变量都会相应地格式化,但 BANK_NAME 常量将不遵守任何格式。有什么理由吗?解决方案?
/**
* Returns information about the CD account
* @return formatted string for CD account information
*/
public String toString()
{
return String.format("Investment Type: %.13s\n" +
"Held By: %.34s\n" + //THIS ONE WILL NOT FORMAT
"%30s\n" +
"Balance: %15.2f\n" +
"Annual Int. Rate: $%4.2f\n",
ACCOUNT_TYPE,BANK_NAME,BANK_ADDRESS,getBalance(),calcInterest());
}
输出示例:
Investment Type: CD 1 Yr
Held By: First Rochester Bank
Rochester, NY
Balance: 5000.00
Annual Int. Rate: $177.83
最佳答案
如果您希望所有数据在输出中特定列的左侧对齐,您应该使用显式填充而不是字段宽度来实现。一方面,如果使用您的方法对一个名称进行正确的对齐,那么对于不同长度的另一个名称来说,对齐将会是错误的。试试这个:
public String toString()
{
return String.format("Investment Type: %.13s%n" +
"Held By: %s%n" +
" %s%n" +
"Balance: %.2f%n" +
"Annual Int. Rate: $%4.2f%n",
ACCOUNT_TYPE,
BANK_NAME,
BANK_ADDRESS,
getBalance(),
calcInterest()
);
}
请注意,我使用换行符格式说明符更改了换行符转义序列。为了跨平台兼容性,这样做通常更好。
关于java - 为什么字符串常量之一不会在 toString 方法中格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20391062/