英文:
Why are my multi-dimensional array initializations not working?
问题
由于某种原因,在IntelliJ中(如果这很重要),当我尝试初始化我的2D数组时,只有我指定大小的第一个框被初始化。也就是说:
int[][] grid = new int[9][9];
并且当我通过调试器运行时,它显示我已经创建了一个int[9][]
的数组。有人知道我做错了什么吗?是不是我需要更新什么?任何帮助都很感谢。谢谢。
英文:
For some reason, in IntelliJ (if that matters), when I try to initialize my 2D arrays, only the first box gets initialized for the size that I am specifying. i.e.
int[][] grid = new int[9][9];
and when I run through with the debugger, it shows that I've created an array that is int[9][]
. Does anyone know what I am doing wrong? could it be that I need to update something? anything helps. Thank you.
答案1
得分: 3
这只是一个调试器的表示。
它总是正常工作。
它确实在内存中创建了一个二维数组。
public static void main(String[] args) {
int[][] grid = new int[9][9];
System.out.println(grid.length);
System.out.println(grid[0].length);
}
这段代码将始终正确返回维度:
9
9
在调试器中可能会得到类似这样的结果 - 明显没有写成 int[9][9],这不是您预期的内容,但这只是一种表示 - 没有关于正确性的问题。
英文:
It is just a debugger representation.
It always works fine.<br>
It do create a two dimensional array in memory.
public static void main(String[] args) {
int[][] grid = new int[9][9];
System.out.println(grid.length);
System.out.println(grid[0].length);
}
This code will always return dimensions properly as:
9
9
What you might get in a debugger is something like this - where definitely is not written int[9][9] what you are expected, however this is a representation only - there is nothing with correctness.
答案2
得分: 0
我曾经遇到过完全相同的问题,并且我发现@Misho Zhghenti的回答是最好的!是的,IntelliJ在调试中的表示会导致混淆。在Java中,多维数组并不真的是那样,它只是一个数组的数组。
谢谢@EthanB21 @Misho Zhghenti
英文:
I've had exactly the same problem and I've found @Misho Zhghenti's answer is the best! Yes, IntelliJ's representation in debug leads to confusion. A multidimensional array in Java isn't really like that, is just an array of arrays.
Thank you @EthanB21 @Misho Zhghenti
答案3
得分: -1
请发布完整的代码,你究竟写了什么以及调试情况。
重启你的集成开发环境(IDE),并使用以下代码检查一次。
public static void main(String[] args) {
int[][] grid = new int[9][9];
int value = 10;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
grid[i][j] = ++value;
}
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(((j == 0) ? "" : ", ") + grid[i][j]);
}
System.out.println();
}
}
注意:IDE 也可能出现异常行为,或者可能响应较慢。
英文:
Please post complete code, what exactly you have written and debugging.
Restart your IDE and check once with below code.
public static void main(String[] args) {
int[][] grid = new int[9][9];
int value = 10;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
grid[i][j] = ++value;
}
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(((j == 0) ? "" : ", ") + grid[i][j]);
}
System.out.println();
}
}
Note: IDE may misbehave too or might be responding late.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论