如何在eclipse的调试模式下更改二维数组的表示?

时间:2017-05-17 21:03:23

标签: java arrays eclipse debugging

正如你在图片中看到的那样,一个名为board的变量。它被定义为:

[[3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
[3, 1, 1, 1, 1, 1, 1, 1, 1, 3],
[3, 1, 1, 1, 1, 1, 1, 1, 1, 3],
[3, 1, 1, 2, 1, 1, 1, 1, 1, 3],
[3, 1, 1, 1, 2, 2, 1, 1, 1, 3],
[3, 1, 1, 1, 2, 0, 1, 1, 1, 3],
[3, 1, 1, 2, 1, 1, 1, 1, 1, 3],
[3, 1, 1, 1, 1, 1, 1, 1, 1, 3],
[3, 1, 1, 1, 1, 1, 1, 1, 1, 3],
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3]]

我希望有这样的代表:

printf("%3", board[i][j])

甚至更好,没有括号和逗号,如果可能的话,还有如果您使用的安排:

{{1}}

要打印它,因为可能有数字> 10,例如具有不同数量的字符。

前段时间我看到过一些非常相似的东西,不幸的是我没有它的截图。

http://face.ci2cv.net/

2 个答案:

答案 0 :(得分:1)

您应该将其封装在一个类中并实现其toString()方法。

Eclipse有一种非常基本的方式来呈现数组,你无法改变它。

有关toString() here的更多信息。

答案 1 :(得分:1)

Eclipse有一个名为detail formatters的功能,允许您为非原始类型编写自定义显示代码片段。听起来不错,对吧?

不幸的是,这不会直接解决您的问题,因为它不适用于原始类型或arrays。 Eclipse总是将这些内置格式化程序用于这些类型。

但是,你确实有几个选择。也许这个数组是包含类的成员 - 在这种情况下,您可以添加toString()方法,以您希望的方式格式化数组,或者为此类型添加详细格式化程序,如上所述(例如,因为toString()方法可能已经以不同的方式实现,您无法改变。

如果情况并非如此,我所知道的最佳方法是仍然编写格式化方法,比如String ArrayFormatter.format2D(int[][] array),然后使用Expressions view用您的数组调用此方法,例如:

ArrayFormatter.format2D(board)

然后,只要board在范围内,表达式视图就会显示格式化的输出。这些表达式在调试运行期间持续存在,因此您只需将其设置一次。