java - 将二维数组打印为网格? ( java )

标签 java arrays

我在我一直从事的个人 Java 项目中遇到了一些难题。我想以表格的形式打印二维字符串数组。不是字符串本身,而是带有行和列标签(想想 Microsoft Excel)。这就是我设想的成品,星号代表字符串应该去的地方。

    |    A    |    B    |    C    |    D    |    E    |    F    |    G    |
----+---------+---------+---------+---------+---------+---------+---------+
  1 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  2 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  3 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  4 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  5 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  6 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  7 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  8 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
  9 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+
 10 |    *    |    *    |    *    |    *    |    *    |    *    |    *    |
----+---------+---------+---------+---------+---------+---------+---------+

我知道这将使用嵌套的前向循环,并且逻辑过程是将字符串值放入内部循环中,如“example[i][j]”类型格式。我只是很困惑如何以正确的格式围绕单元格进行设计,将每个字符串限制为 10 个字符,就像 Excel 在缩小时如何限制其单元格大小一样。我需要使用子字符串吗?我是否使用 printf 使第 10 行的间距正确?

非常感谢任何指点,我以前从未遇到过这样的困扰。

最佳答案

第一行应该很简单,假设您不超过 26 列,即列名称只是 AZ

偶数行都是 ----+ 的开头,后面是 --------+ 的 columnCount 重复。

奇数行(第一行除外)是 999 | 的引入,其中 999 是行号,右对齐,带有前导空格。这可以通过 printf()String.format() 以及格式字符串
来完成 “%3d |”

引入部分后面是一个字符串值的 columnCount 重复项,经过修剪并居中对齐到 9 个字符,后跟一个 |

要居中对齐 9 个字符,请执行以下操作:

  • 如果长度 > 9,则修剪为 9(是的,使用 substring())。
  • 否则,计算所需的空间,即 spacesTotal = 9 - trimmedLength
    计算左侧空间:spaceBefore = spaceTotal/2
    计算右侧空格:spaceAfter = spaceTotal - spaceBefore
    通过这样做,奇数个空格(例如 5 个)会变成前面 2 个、后面 3 个。
    现在打印 spaceBefore 空格、(修剪后的)文本值,然后打印 spaceAfter 空格和 |

关于java - 将二维数组打印为网格? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35354875/

相关文章:

java - 从 java 运行 sipp

java - Heroku 应用程序成功启动后崩溃

javascript - 有没有办法使字符串等于数组中的数字?

ios - 过滤和排序 swift 数组

mysql - 如何在 MySQL 和 Node.js 的单列中存储数组值?

java - Android:我需要像图像一样做一个菜单

java - 为什么 JSOUP 不能读取为 UTF-8?

java - JMS 架构问题?

Python:将 3 个矩阵连接到一个列表

java - 具有输入值的二维 boolean 数组