Java数组输出格式

Java数组输出格式,java,java-8,java-stream,Java,Java 8,Java Stream,我知道,在格式化输出时,我们需要使用fortmat方法。以下是我的代码: int arr[] = { 38, 27, 43, 3, 9, 82, 10 }; Arrays.stream(arr).forEach(s -> System.out.format("%2d", s)); //output 382743 3 98210 Arrays.stream(arr).forEach(s -> System.out.format("%3d", s)); //output

我知道,在格式化输出时,我们需要使用fortmat方法。以下是我的代码:

int arr[] = { 38, 27, 43, 3, 9, 82, 10 };
    Arrays.stream(arr).forEach(s -> System.out.format("%2d", s));
//output     382743 3 98210
Arrays.stream(arr).forEach(s -> System.out.format("%3d", s));
//output  38 27 43  3  9 82 10
如果我使用以下代码:

int arr[] = { 38, 27, 43, 3, 9, 82, 10 };
    Arrays.stream(arr).forEach(s -> System.out.format("%2d", s));
//output     382743 3 98210
Arrays.stream(arr).forEach(s -> System.out.format("%3d", s));
//output  38 27 43  3  9 82 10
我只想在下一个值之间用一个空格打印输出。类似于382743398210的东西可以与占位符一起使用。所以%d代表一个“小数点”,你在后面给他。使用该数字,您可以指定占位符的“宽度”。因此%3d将始终具有至少3个宽度

如果您只想输出间隔为一个空格的值,请执行以下操作:

Arrays.stream(arr).forEach(s -> System.out.format("%d ", s));

然后,在数组中的每个条目中输入小数,而不指定宽度和空格。

如果需要int数组元素之间的空格分隔符,可以使用StringJoiner类,如下所示:

int arr[] = { 38, 27, 43, 3, 9, 82, 10 };
StringJoiner sj = new StringJoiner(" ");
for (int i : arr) { sj.add(String.valueOf(i)); }
String spaceSeparatedNumbers = sj.toString();
System.out.println(spaceSeparatedNumbers); //<-- 38 27 43 3 9 82 10

我以前从未注意到这个核心类。谢谢@erickson不客气:-我使用这个类是因为数组中包含整数,并且为了避免数组最后一个元素后出现危险的不可见空格的问题,它对于日志记录也非常有用。这也是使用字符串spaceSeparatedNumbers=Arrays.streamarr.mapToObjString::valueOf.collectors.joining时得到的结果;或者只是System.out.prints+,它与System.out.format%d,s的功能相同,但没有隐藏的占位符。是的,没错。还有其他更好的方法来完成原始任务。但问题是从序言开始的,“……我们需要使用格式方法……”事实上,问题是从“我知道,我们需要使用格式”开始的,这听起来像是错误的假设或半知半解,因为我们不需要使用格式,因为存在替代方案。