Java中的输出文本移动了半个空格

Java中的输出文本移动了半个空格,java,text,printf,output,Java,Text,Printf,Output,我试图水平显示不同大小的矩阵。 我正在使用BlueJ终端窗口中的。 如果左侧矩阵的行数多于后面的矩阵,则打印矩阵是可行的,但是,如果左侧矩阵的行数较少,则下面的矩阵将不对齐。下面的图片 一个明显的解决方案可能是去掉第二个矩阵之前的一个空格(第一个矩阵结束后),但这会产生以下结果: 用于在第二个矩阵的行之前生成间距的代码: System.out.printf("%"+Integer.toString((width*numElements) + (numElements+4)) + "s", "

我试图水平显示不同大小的矩阵。 我正在使用BlueJ终端窗口中的。 如果左侧矩阵的行数多于后面的矩阵,则打印矩阵是可行的,但是,如果左侧矩阵的行数较少,则下面的矩阵将不对齐。下面的图片

一个明显的解决方案可能是去掉第二个矩阵之前的一个空格(第一个矩阵结束后),但这会产生以下结果:

用于在第二个矩阵的行之前生成间距的代码:

System.out.printf("%"+Integer.toString((width*numElements) + (numElements+4)) + "s", " ");
其中,
width
等于矩阵中最大值的长度,
numElements
等于矩阵每行中的元素数

如何正确对齐这些矩阵


提前谢谢你

在java中,某些单间距字体在某些情况下会错误地显示空格。至少对于我正在使用的程序(BlueJ),应该垂直对齐的文本被关闭了一点。事实证明,这个“小比特”正好是常规空格字符的5/6。因此,为了抵消程序产生的不对齐,只需在不对齐的行之前添加一个5/6的空格字符。要在java中实现5/6空格字符,请使用以下代码:

String five_sixth_space = String.valueOf((char)8194)+String.valueOf((char)8198)+String.valueOf((char)8198);

在java中,某些单间距字体在某些情况下会错误地显示空格。至少对于我正在使用的程序(BlueJ),应该垂直对齐的文本被关闭了一点。事实证明,这个“小比特”正好是常规空格字符的5/6。因此,为了抵消程序产生的不对齐,只需在不对齐的行之前添加一个5/6的空格字符。要在java中实现5/6空格字符,请使用以下代码:

String five_sixth_space = String.valueOf((char)8194)+String.valueOf((char)8198)+String.valueOf((char)8198);

如果您放置一个
System.out.println()
在print语句之前,它应该在BlueJ中工作。

如果您放置
System.out.println()在打印语句之前,它应该在BlueJ中工作。

您能显示您的代码吗?您是否也尝试过使用padding+选项卡将矩阵与网格对齐?是的。现在,我将进一步研究它,对齐问题可能是由于使用单间距字体造成的,这种字体在java中会导致对齐错误。您能展示您的代码吗?您是否也尝试过使用padding+选项卡将矩阵与网格对齐?是的。现在,我正在深入研究它,对齐问题可能是由于使用单间距字体造成的,这种字体在java中会导致对齐错误。不过,这似乎是一种不易操作的跨平台修复方法。似乎更好的解决办法是解决根本问题,比如解决导致5/6显示正确的原因,但我只是想让我的CS类作业看起来漂亮。因此,它是有效的:)这似乎是一个黑客,不会工作的跨平台的修复。似乎更好的解决办法是解决根本问题,比如解决导致5/6显示正确的原因,但我只是想让我的CS类作业看起来漂亮。因此,它是有效的:)