【问题标题】:Output text in Java shifted half a spaceJava中的输出文本移动了半个空格
【发布时间】:2016-05-19 02:31:33
【问题描述】:

我正在尝试水平显示不同大小的矩阵。 我正在使用 BlueJ 终端窗口进行输出。 如果左侧矩阵的行数多于后面的矩阵,则打印矩阵有效,但是当它的行数较少时,以下矩阵不对齐。如下图。

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

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

System.out.printf("%"+Integer.toString((width*numElements) + (numElements+4)) + "s", " ");

其中width 等于矩阵中最大值的长度,numElements 等于矩阵每一行的元素个数。

如何正确对齐这些矩阵?

提前谢谢你!

【问题讨论】:

  • 你能显示你的代码吗?您是否也尝试过填充 + 使用制表符将矩阵与网格对齐?
  • 是的。现在我正在研究它,对齐问题可能是使用等宽字体的结果,这种字体已知会导致 java 中的对齐错误。

标签: java text printf output


【解决方案1】:

某些等宽字体在 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);

【讨论】:

  • 这似乎是一个 hacky,但不会跨平台工作。似乎更好的解决方法是解决根本问题,例如修复导致 5/6 显示的原因
  • 没错,但我只是想让我的 CS 课作业看起来不错。所以它的工作原理:)
【解决方案2】:

如果您在 print 语句前加上 System.out.println();,它应该可以在 BlueJ 中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多