所以基本上问题是我有一段代码需要通过java方法中的非常小的变化重复使用。
此部分代码还需要访问仅在类方法中定义的变量。
我进行了搜索,但发现无法在方法中添加子例程。我想添加一个本地类,但似乎你不能使用静态方法,这是我真正需要的。
如果它有帮助,我的目标是初始化一个游戏板,基本上包括:
GameSquare[][] board = new GameSquare[15][15];
并为每次通话:
board[a][b] = new GameSquare(params);
应该有相应的电话:
board[b][a] = new GameSquare(params);
board[15-a][15-b] = new GameSquare(params);
board[15-b][15-a] = new GameSquare(params);
即任何特殊方块都需要镜像其他四个角落。
我希望将所有这些包含在一个方法中。如果有方法在方法中有方法,我可以:
method( int a, int b, otherparams passed to GameSquare constructor){
//initialise those 4 squares.
}
但是,到目前为止,我还没有找到这样做的方法。
干杯。
答案 0 :(得分:1)
由于它是一个数组,如何将数组作为参数传递给方法呢?除了原语(int
,float
等)之外,Java中的参数通过引用传递,因此您仍在修改相同的数组。
method(GameSquare[][] board, int a, int b, otherparams passed to GameSquare constructor){
board[a][b] = new GameSquare(params)
board[b][a] = new GameSquare(params)
board[15-a][15-b] = new GameSquare(params)
board[15-b][15-a] = new GameSquare(params)
}
使用它:
GameSquare[][] board = new GameSquare[15][15];
method(board,a,b,params);
答案 1 :(得分:1)
在我看来,你需要一个包含GameSquares数组的新类GameBoard。它会有一个方法
setSquare(int a,int b,GameSquare gs)
了解镜像。
答案 2 :(得分:0)
不,我们不能用Java,有时候很烦人。
你可以像凯文所示,在外面宣布这个方法。这不是那么糟糕。
本地课也很好。该方法不必是静态的。
final GameSquare[][] board = ...
class Util
void method(...)
board[][]...
Util util = new Util();
util.method(...);
这有点冗长。
答案 3 :(得分:0)
这就是你想要特殊方块的方式吗?
class GameSquare {
GameSquare(int x) {
this.x = x;
}
public String toString() {
return "" + x;
}
int x;
}
public class Main {
void print() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
if (board[i][j] == null) System.out.print("oops");
else if (board[i][j].x < 10) System.out.print(board[i][j] + " ");
else
System.out.print(board[i][j] + " ");
System.out.println();
}
}
void makeSpecial(int i,int j,int k) {
board[i][j] = new GameSquare(k);
board[j][i] = new GameSquare(k);
board[n - 1 - i][n - 1 - j] = new GameSquare(k);
board[n - 1 - j][n - 1 - i] = new GameSquare(k);
board[i][n - 1 - j] = new GameSquare(k);
board[n - 1 - j][i] = new GameSquare(k);
board[n - 1 - i][j] = new GameSquare(k);
board[j][n - 1 - i] = new GameSquare(k);
}
void init() {
int k = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++, k++)
board[i][j]=new GameSquare(0);
makeSpecial(2,3,1);
makeSpecial(5,6,2);
}
public static void main(String[] args) {
Main main = new Main();
main.init();
main.print();
}
final int n = 7;
GameSquare[][] board = new GameSquare[n][n];
}