You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java类中使用数组?解决静态方法引用非静态字段错误

问题解决思路

你的问题核心是两个错误:静态方法无法直接访问非静态成员变量,以及构造函数里的局部变量覆盖了类成员变量。

1. 修复构造函数的变量覆盖问题

你在构造函数里写的String[][] board = new String[13][13];是局部变量,和类的成员变量board完全是两个东西,等于白初始化了成员变量。修改构造函数,直接操作成员变量:

public Game() {
    // 去掉String[][]声明,直接初始化类的成员变量
    board = new String[13][13];
}

如果成员变量声明时已经做了new String[13][13]初始化,构造函数也可以留空,不过显式初始化更清晰。

2. 将静态方法改为非静态方法

makecross1是静态方法,静态方法属于类本身,不能直接访问属于对象实例的非静态成员变量。去掉static关键字,改成实例方法,就能直接使用类里的board成员变量,不用再传参数:

public void makecross1() {
    for (int i = 0; i < 13; i++) {
        for (int j = 0; j < 13; j++) {
            board[i][j] = " ";
        }
    }
    for (int i = 3; i < 10; i++) {
        for (int j = 5; j < 8; j++) {
            board[i][j] = "o";
            board[j][i] = "o";
        }
    }
    Random r = new Random();
    while (true) {
        int x = r.nextInt(13);
        int y = r.nextInt(13);
        if (board[x][y].equals("o")) {
            board[x][y] = "/";
            break;
        }
    }
}

最终完整代码

import java.util.Random;

public class Game {
    public String[][] board = new String[13][13];

    public Game() {
        board = new String[13][13];
    }

    public void makecross1() {
        for (int i = 0; i < 13; i++) {
            for (int j = 0; j < 13; j++) {
                board[i][j] = " ";
            }
        }
        for (int i = 3; i < 10; i++) {
            for (int j = 5; j < 8; j++) {
                board[i][j] = "o";
                board[j][i] = "o";
            }
        }
        Random r = new Random();
        while (true) {
            int x = r.nextInt(13);
            int y = r.nextInt(13);
            if (board[x][y].equals("o")) {
                board[x][y] = "/";
                break;
            }
        }
    }
}

调用示例

现在不用传数组,直接创建对象调用方法即可:

Game game = new Game();
game.makecross1();
// 处理后的数组直接通过game.board访问

内容的提问来源于stack exchange,提问作者Yanoisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:35:34