gpt4 book ai didi

java - 面向对象语言中的全局变量

转载 作者:行者123 更新时间:2023-12-02 05:55:14 25 4
gpt4 key购买 nike

我现在正在开发一个 ASCII 检查程序,我正在尝试弄清楚应该如何存储我的棋盘状态。显然,我需要一个 2d int/short 数组(用于状态“黑色”、“白色”、“空”),但我不知道应该如何声明它,以便可以从程序中的任何位置访问它,就像我一样可能需要。

在我过去使用过的过程语言中,全局变量很容易,但显然 Java 中的全局变量是一种非常糟糕的做法。另外,我正在一个java文件的约束下工作,所以我不知道这是否限制了我的选择。我正在 NetBeans 中工作,对于这项作业,它应该是一个 .java 文件。

现在我只是在类中的 main 方法之前使用 public static int[][] checkersBoard; 。但我很确定这是不好的做法

谢谢!

P.s.这是一个额外的问题,这就是为什么我没有被教导如何做到这一点:P

最佳答案

OO 语言中有一个常用的中间立场,那就是实例变量。事实上,这是 OO 语言的主要功能之一,正是这些功能使它们如此强大。

您可以将您的类设计为仅具有一个 public int[][] board,从所有对游戏状态进行操作的方法中删除 static 修饰符。

如果您的类名为 CheckerGame,您可以在主方法中实例化 new CheckerGame(),并调用其上的方法。以下无意义的示例应该可以帮助您入门:

public class CheckerGame {
public int[][] board;
public int getBoard(int row, int col){
return board[row][col];
}
public void setBoard(int row, int col, int val){
board[row][col] = val;
}

public CheckerGame(){ board = new int[8][8];

public static void main(String... argv){
CheckerGame game = new CheckerGame();
game.setBoard(1,2,0);
}

}

然后,您可以添加新方法来操作实例(例如 moveChecker 和 checkWin),从而允许您重用和组织功能。

关于java - 面向对象语言中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com