首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java 2D数组对象不能解析为变量吗?

Java 2D数组对象不能解析为变量吗?
EN

Stack Overflow用户
提问于 2018-09-24 02:30:16
回答 1查看 189关注 0票数 0

我有一个名为game的类,在这个类中,我使用默认构造函数来创建和初始化来自另一个类的对象的2D数组。但是,在我用来操作2D数组中对象的变量的另一种方法中,我遇到了一个错误,指出"gameBoard (对象)无法解析为变量“。该错误仅在第二个方法的底部遇到。

代码语言:javascript
复制
public game() {
        // Start initialize game board
        grid[][] gameBoard = new grid[9][9];

        gameBoard[0][0] = new grid(" ", "N", true);
        gameBoard[0][1] = new grid("A", "N", true);
        gameBoard[0][2] = new grid("B", "N", true);
        gameBoard[0][3] = new grid("C", "N", true);
        gameBoard[0][4] = new grid("D", "N", true);
        gameBoard[0][5] = new grid("E", "N", true);
        gameBoard[0][6] = new grid("F", "N", true);
        gameBoard[0][7] = new grid("G", "N", true);
        gameBoard[0][8] = new grid("H", "N", true);
        gameBoard[1][0] = new grid("1", "N", true);
        gameBoard[2][0] = new grid("2", "N", true);
        gameBoard[3][0] = new grid("3", "N", true);
        gameBoard[4][0] = new grid("4", "N", true);
        gameBoard[5][0] = new grid("5", "N", true);
        gameBoard[6][0] = new grid("6", "N", true);
        gameBoard[7][0] = new grid("7", "N", true);
        gameBoard[8][0] = new grid("8", "N", true);

        for (int x = 1; x < 9; x++) {
            for (int y = 1; y < 9; y++) {
                gameBoard[x][y] = new grid();
            }
        }
        // End
    }

    public void placeUserShips() {
        // Start place user ships
        for (int x = 1; x <= 6; x++) {
            System.out.print("Enter the coordinates of your ship #" + x + ": ");
            String cell = input_scanner.nextLine();
            String letter = cell.substring(0, 1);
            switch (letter) {
                case "A":
                    letterCol = 1;
                    break;
                case "B":
                    letterCol = 2;
                    break;
                case "C":
                    letterCol = 3;
                    break;
                case "D":
                    letterCol = 4;
                    break;
                case "E":
                    letterCol = 5;
                    break;
                case "F":
                    letterCol = 6;
                    break;
                case "G":
                    letterCol = 7;
                    break;
                case "H":
                    letterCol = 8;
                    break;
                default:
                    letterCol = 0;
                    break;
            }
            number = Integer.parseInt(cell.substring(1, 2));
            if (gameBoard[letterCol][number].type == "" && number >= 1 && number <= 8) {
                gameBoard[letterCol][number].type = "s";
            } else {
                System.out.println("Sorry, those coordinates are already in use. Try again.");
                x -= 1;
            }
        }
        // End
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-24 03:39:43

正如问题Java, “Variable name” cannot be resolved to a variable中所述,当您引用一个未定义的变量(或超出范围)时,就会发生这种错误。

您可以在game()中构造gameBoard,然后将其返回给placeUserShips()

代码语言:javascript
复制
public grid[][] game() {
    // Start initialize game board
    grid[][] gameBoard = new grid[9][9];

    // ...

    return gameBoard;
}

public void placeUserShips() {
    // Start place user ships
    grid[][] gameBoard = game();
    // ...
}

或者使用全局变量(在main中,您应该首先调用game ):

代码语言:javascript
复制
private grid[][] gameBoard;
public void game() {
    // Start initialize game board
    gameBoard = new grid[9][9];

    // ...
}

public void placeUserShips() {
    // Start place user ships
    // ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52469090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档