【问题标题】:String Array only calling method once字符串数组只调用一次方法
【发布时间】:2016-09-16 10:35:29
【问题描述】:

您好,我有一个控制台应用程序,我试图在其中创建游戏 Morris,但在哈希图中设置一个点后绘制地图时遇到问题。我已经确认我的观点的价值正在改变,但由于某种原因,方法 v 没有被再次调用。

这是我的数组的绘制代码,抱歉我的字符串数组看起来很糟糕:

public abstract class BoardGeometry {
    // Een array van Strings waarmee je het bord kunt tekenen
public static String v(char c) {
    System.out.println(Board.boardHashMap.get(c).getValue());
    return Board.boardHashMap.get(c).getValue();
}

public final static String[] LAYOUT = {
        "" + v('A') + "-----------" + v('B') + "-----------" + v('C') + "       A-----------B-----------C",
        "|           |           |      |           |           |",
        "|   " + v('D') + "-------" + v('E') + "-------" + v('F') + "   |       |   D-------E-------F   |",
        "|   |       |       |   |      |   |       |       |   |",
        "|   |   " + v('G') + "---" + v('H') + "---" + v('I') + "   |   |       |   |   G---H---I   |   |",
        "|   |   |       |   |   |      |   |   |       |   |   |",
        "" + v('J') + "---" + v('K') + "---" + v('L') + "       " + v('M') + "---" + v('N') + "---" + v('O')
                + "     J---K---L       M---N---O",
        "|   |   |       |   |   |      |   |   |       |   |   |",
        "|   |   " + v('P') + "---" + v('Q') + "---" + v('R') + "   |   |       |   |   P---Q---R   |   |",
        "|   |       |       |   |      |   |       |       |   |",
        "|   " + v('S') + "-------" + v('T') + "-------" + v('U') + "   |       |   S-------T-------U   |",
        "|           |           |      |           |           |",
        "" + v('V') + "-----------" + v('W') + "-----------" + v('X') + "       V-----------W-----------X" };
}

这是我用来绘制它的代码:

public static void drawMap() {
    for (String s : BoardGeometry.LAYOUT) {
        System.out.println(s);
    }

}

所以把

System.out.println(Board.boardHashMap.get(c).getValue());

并且使用调试模式,我已经确认它在运行时只通过 v 方法一次,而不是每次我调用 drawMap();

完全不知道为什么,如果这是一个重复的问题,我很抱歉,我不确定要搜索什么,并且我已经坚持了几个小时,直到我能够将其固定下来。

【问题讨论】:

  • 因为我没有看到你实际调用了 v 方法,你期待什么?
  • 在强阵中?不会 "" + v('A') + " 导致 Board.boardHashMap.get('A').getValue();
  • LAYOUT 只分配了一次值,因此之后它永远不会改变。如果您有一个方法返回与 = 之后相同的内容,那么它应该可以工作,因为数组是根据更新的数据构造的。
  • Strah 抱歉,错过了。反正drawmap没有设置Layout,也就是说它不会调用v方法
  • 添加一个 redrawMap 方法,设置 String[] s = 一大堆丑陋的代码,然后 LAYOUT = s;这样合适吗?

标签: java console-application


【解决方案1】:

问题是您只将一个值放入 LAYOUT 一次并且该值是固定的。每次绘制地图之前都需要重新计算 LAYOUT,否则它将保持相同的值(地图)

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 2014-06-07
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    相关资源
    最近更新 更多