如何使用 Graphics 在整齐的列中打印 Java 数组?

How can you print a Java array in neat columns using Graphics?

我正在尝试创建一个函数,它接受一个 java 数组和每行的元素数以及 returns 要显示的格式化字符串。这是我的代码:

public String displayArray(double [] arr, int numPerRow) {
        String formatted = "";
        for (int i = 0; i < arr.length; i++) {
            if (i % numPerRow != 0) {
                formatted += String.format("%8.1f ", arr[i]);
            } else {
                formatted += String.format("%n%8.1f ", arr[i]);
            }
        }
        return formatted;
    }

当我使用 println 时,我收到了所需的输出:

    87.7     72.2     83.4     28.3     69.0     53.3     28.0     16.6     49.7     63.4 
    86.2     17.4     48.9     83.0     81.0     54.3     31.0     47.7     58.7      8.6 
    64.0     96.8     47.7      0.7     39.1     22.9     53.6     10.1     75.8      2.5 

但是,当我在文本字段中显示文本时,我得到:

引入具有不同位数的数字后,格式会变得混乱。有谁知道这个问题的解决方案吗?

仅提供已批准的评论作为实际答案:

使用等宽字符的字体。

这里的问题(正如@Socowi 在评论中指出的那样)是空格与数字的大小不同(而且数字可能大小不一,很难从屏幕截图中分辨出来字体),这意味着在数字位数较少的行(即包含小于 10 的数字)文本区域的字体中有 'drift',但输出时 不是 控制台(通常已经使用等宽字体)。