【问题标题】:How can I change the representation of 2-dimensional arrays in the debugging mode of eclipse?如何在eclipse的调试模式下改变二维数组的表示?
【发布时间】:2017-05-17 21:03:23
【问题描述】:

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

int board[][] = new int[10][10] 

我想要这样的表示:

[[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])

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

我前段时间看到过非常相似的东西,可惜我没有截图。

【问题讨论】:

    标签: java arrays eclipse debugging


    【解决方案1】:

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

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

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

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

    ArrayFormatter.format2D(board)
    

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

    【讨论】:

    • toString() 工作得很好。当我自己做一些研究时,我也偶然发现了这些细节格式化程序。您不知道链接提到的任何更好的“教程”吗?它有点小……我已经看过了。
    • 这是一个非常小的,因为我认为细节格式化程序非常简单。事实上,本教程可能比它需要的长一点,因为它涵盖了您的详细信息格式化程序的“开发”。这是我刚刚尝试过的非常简单的版本:打开 Eclipse 创建一个空类Foo 和一个主方法,如Foo f = new Foo(); f.hashCode();。在hashCode 行上放置一个断点并调试。在 Variables 视图中,右键单击 f 并选择“New Detail Formatter...”。输入return "hotdog"; 并保存。完成 - f 的显示现在显示“热狗”。 @Felix.C
    • 如果您有关于详细格式化程序的具体问题,您可以在 SO 上创建另一个问题。
    【解决方案2】:

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

    Eclipse 有其非常基本的方式来呈现数组,您无法更改它。

    更多关于toString()here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2011-08-15
      • 2011-09-14
      • 1970-01-01
      • 2013-02-06
      相关资源
      最近更新 更多