Java:两个平行列格式

标签 java formatting

我想在两列中打印变量,但我需要很好地打印它们。我所拥有的是:

想象一下 var1var2 是在整个程序中根据用户输入进行更改的字符串。 var1的长度会影响var2的位置,所以var2的位置不会平行。那么java中有没有可以自定义打印格式的方法呢?

我想要什么:我想确保两列都以并行方式列出,无论它们的长度如何

到目前为止我已经尝试过:System.out.printf("%s %13s\n", var1, var2);

1)apple   1)bad fruit
2)orange  2)good fruit
3)pig      3)animal <----- off

最佳答案

就像在 C 中一样,有一个 printf功能。可以通过%<num>s这将打印给定的字符串恰好占据 <num>人物。如果字符串长度小于 <num> ,将添加空格。因此,第一个参数是要打印的格式,其他参数是将要格式化的值。例如,您可以指定 %d 作为格式。这将打印整数, %f这将打印 float ,%s这将打印字符串等。

System.out.printf("%8s %7s %6s\n", "One", "Two", "Three");

这是解决您的问题的代码:

    String[][] values = {
        {"apple", "good fruit"},
        {"orange", "bad fruit"},
        {"pig", "animal"}
    };

    int maxLength = 0;

    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 2; j++) {
            if(values[i][j].length()> maxLength) {
                maxLength = values[i][j].length();
            }
        }
    }

    String format = "%d)%-" + maxLength + "s %d)%-" + maxLength + "s\n";

    for(int i = 0; i < 3; i++) {
        System.out.printf(format, i + 1, values[i][0], i + 1, values[i][1]);
    }

这是上面代码的输出:

1)apple      1)good fruit
2)orange     2)bad fruit 
3)pig        3)animal 

关于Java:两个平行列格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50440440/

相关文章:

layout - 更改 latex 文档中间的纸张尺寸?

sass - 有没有办法将 ReSharper 代码清理设置应用于 .scss (SASS) 文件?

html - Bash 字符串格式化

JasperReports 中的 java.util.ConcurrentModificationException

java - Pusher:减少连接状态的超时

java - DAO接口(interface)和DAO实现的SpringMvc注解

javascript - 数据表 - rows().data().each() 函数不起作用

java - ph-schematron 验证错误消息

python - 我们应该为 python 变量名使用哪些缩写?

sql - 在日期时间上转换 varchar 114 等于什么?