java - 为什么字符串常量之一不会在 toString 方法中格式化?

标签 java

所有其他变量都会相应地格式化,但 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/

相关文章:

javascript - 如何通过 Selenium webdriver 处理 Abhibus 回程的第二个日期选择器?

java - 使用 Feign 将 POST 数据作为请求参数包含在内

Java - Graphics2D - 鼠标移动后绘制一条线

java - 明喻时间轴

java - 创建一个页面,在主要 Activity 开始之前询问用户详细信息

java - SAXBuilder jdom 给出异常

java - Tensorflow-Java 图像比较

java - 无法使用 Ebean 使用 GENERATED IDENTITY 主键创建记录

java - 防止 hibernate 合并后刷新

java - 在 Guice 中,如何创建具有不同作用域依赖关系的 Map Binder 单例绑定(bind)?