【问题标题】:How to pass multiple array values as format args?如何将多个数组值作为格式参数传递?
【发布时间】:2015-10-09 00:21:24
【问题描述】:

使用 writer.format 并传递预定义的格式字符串 (%5s%10s...),将字符串数组解析为单独参数的最佳方法是什么?

如果我有:

Printwriter writer = new Printwriter ("table.txt");
String[] columns = {"Name", "Month", "Day"};
String form_string = "%20s%10s%5s";

如何将数组元素名称、月份和日期作为 arg1、arg2、arg3 传入:

writer.format(form_string, arg1, arg2, arg3);

【问题讨论】:

  • 我们可以在问题中找到一些例子吗
  • 留在writer.format(form_string, columns[0], columns[1], columns[2]);。最清楚。附言为什么左对齐填充不使用“%-20s”?
  • 问题是数组是任意的,代码在一个以字符串数组为参数的函数中,所以我不知道数组的长度或内容
  • 您可以使用 for 循环遍历列并将其附加到字符串,然后存储该字符串。如果您需要示例代码,请告诉我,我会发布答案。
  • 是的,我不确定如何实现它,因为我需要 columns[] 中的每个字符串作为格式的特定参数。代码将不胜感激 d

标签: java java.util.scanner printwriter


【解决方案1】:

从 java 1.5 开始,PrintWriter 类有一个方法 printf(参见 https://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html#printf-java.lang.String-java.lang.Object...-),它可以帮助您,因为它只接受一组参数。

这里有一个 sn-p 代码:

PrintWriter writer = new PrintWriter(System.out);
String[] columns = {"Name", "Month", "Day"};
String form_string = "%20s%10s%5s";
writer.printf(form_string,columns);
writer.flush();

输出只是格式化为所需的格式。

            Name     Month  Day

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2017-01-27
    • 2017-11-30
    • 2020-10-06
    相关资源
    最近更新 更多