如何使用Arrays.toString每行打印特定数量的值?

时间:2018-10-25 16:28:00

标签: java arrays tostring

我这样打印我的数组:

public void something () {
    String out = (java.util.Arrays.toString(array)+(...));
    showMessageDialog(null, out);

Main调用包含此方法的类中的另一个方法。 我想为数组的每8个值换行。我知道如果我在for循环中打印每个值,我可以这样做:

if (printed == 8) {
           System.out.print("\n");
           printed = 0;

但是使用Arrays.toString()时该怎么做?  感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

您可以使用java.lang.Instrumentation通过调试代理在运行时更改方法的行为。例如,请参见:https://github.com/turn/RedefineClassAgent

答案 1 :(得分:0)

Arrays.toString并不是您的正确选择,但是您可以使用Java流以或多或少的紧凑方式创建字符串。

    String result = java.util.stream.IntStream
            .range(0, array.length)
            .mapToObj( i -> array[i] + ( ( (i + 1) %8 ) == 0 ? "\n":", " ) )
            .collect( Collectors.joining("") );

答案 2 :(得分:0)

    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i] + (i % 7 == 0 && i > 0 ? "\n" : ""));
    }

答案 3 :(得分:-2)

可能,但不值得。

您可以使用扩展Array的类。然后,您需要重写toString()方法并根据需要实现它。但是要使用toString()的实现,所有数组都必须是新类的对象。然后,每个System.out.println()都将使用您的实现。

可能,但完全不值得。这是您和CPU时间的极大浪费。