1 public class TestWin{
2 public static void main(String[] args){
3 int n;
4 hexagon[][] board;
5
6 n = 4;
7 board = new hexagon[n][n];
8 board[0][0].value = 'R';
Run Code Online (Sandbox Code Playgroud)
你好.javac不喜欢我在第8行所做的.有谁知道为什么?
kwa*_*ord 10
我已经有一段时间了,因为我看了很多Java,但你有没有尝试过这样做?
board[0][0] = new hexagon(); // or whatever its constructor is
Run Code Online (Sandbox Code Playgroud)
在kwatford上发现.您对第7行所做的就是告诉java为2维数组中的n*n六角形对象创建空间.
您仍然需要为每个六边形调用new
基本上,您需要用以下内容替换第7行:
board = new Hexagon[n][n];
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
board[i][j] = new Hexagon();
Run Code Online (Sandbox Code Playgroud)
简答:
正如kwatford所说,你需要做的是:
board[0][0] = new hexagon(); // or whatever its constructor is
Run Code Online (Sandbox Code Playgroud)
更长的解释:
只是为了进一步扩大.你的2D阵列是; 指针数组(或Java中的引用).这是在此调用之后,数组的一行将立即显示的内容board = new hexagon[n][n];:
0 1 2 3 4 5 // column index, row index = 0
-------------------------------------------
| | | | | | | | | | // value
--- | ----- | ----- | ---------------------
| | | ...
| | |
| | |
| | |
| | v
| | Null
| v
| Null
v
Null (This means that it points to nothing)
Run Code Online (Sandbox Code Playgroud)
你试过:
board[0][0].value = 'R';
Run Code Online (Sandbox Code Playgroud)
这与此相同:
null.value = 'R';
Run Code Online (Sandbox Code Playgroud)
您已使用以下行初始化了数组:
board = new Hexagon[n][n];
Run Code Online (Sandbox Code Playgroud)
但是您仍然需要初始化数组中的元素.这将初始化前三个:
board[0][0] = new hexagon(); // or whatever its constructor is
board[1][0] = new hexagon(); // or whatever its constructor is
board[2][0] = new hexagon(); // or whatever its constructor is
Run Code Online (Sandbox Code Playgroud)
这将导致一个如下所示的数组:
0 1 2 3 4 5 // column index, row index = 0
-------------------------------------------
| | | | | | | | | | // value
--- | ----- | ----- | ---------------------
| | |
| | |
| | |
| | |
| | v
| | An instance of type Hexigoon (what you get when you type new Hexigon)
| v
| An instance of type Hexigon (what you get when you type new Hexigon)
v
An instance of type Hexigon (what you get when you type new Hexigon)
Run Code Online (Sandbox Code Playgroud)
两年前,我记得用这个确切的问题把我的头撞在桌子上.我喜欢stackoverflow
| 归档时间: |
|
| 查看次数: |
3199 次 |
| 最近记录: |