如何使用 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',但输出时 不是 控制台(通常已经使用等宽字体)。
我正在尝试创建一个函数,它接受一个 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',但输出时 不是 控制台(通常已经使用等宽字体)。