【问题标题】:How do I print in columns in java with printf?java - 如何使用printf在java中的列中打印?
【发布时间】:2020-09-06 18:38:48
【问题描述】:

我正在尝试获得如下所示的内容:

Day         Car 1      Car 2
1           3800.20    2200.42
2           2700.67    3678.14
3           2900.00    2694.47

我尝试在我的 for 循环中执行此操作(字符串的第一行代码在 for 循环之外,但看起来相同,只是变量不同):

System.out.printf("%6d %6d %6d",Day,Car1,Car2);

但我只是遇到错误。我希望列左对齐。

我该怎么做?非常感谢!

【问题讨论】:

  • “但我只是遇到了错误。” - 什么错误? "%6d" - 你想用这个做什么?
  • 我猜你正在尝试传递浮点数或双精度数;您需要 %6.2f 而不是 %6d ,但是,实际上,在就 SO 提出问题并报告您尝试过的内容时,您需要显示完整的代码并添加您得到的确切错误,这使得我们为您提供帮助更容易:)
  • 请清楚地指出错误、您的输入、您的实际(不需要)输出以及您尝试过的内容(所有循环都带有 printf 语句)。
  • %d 在这种情况下指的是数字或整数。如果你想格式化十进制数,你应该使用 %f。检查此以获取更多信息:javatpoint.com/java-string-format

标签: java printf multiple-columns


【解决方案1】:

要将列左对齐,必须在格式化模式中使用-,因为默认情况下数字列右对齐:

Object[][] a = {
    {1, 3800.20, 2200.42},
    {2, 2700.67, 3678.14},
    {3, 2900.00, 2694.47}
};
System.out.printf("%3s  %-9s  %-9s%n", "Day", "Car1", "Car2");
for (Object[] r : a) {
    System.out.printf("%-3d  %-9.2f  %-9.2f%n", r[0], r[1], r[2]);
}

输出:

Day  Car1       Car2     
1    3800.20    2200.42  
2    2700.67    3678.14  
3    2900.00    2694.47  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多