gpt4 book ai didi

java - 二维数组、方法和变量

转载 作者:行者123 更新时间:2023-12-01 09:06:48 25 4
gpt4 key购买 nike

似乎我的主要变量 nm 无法通过方法维度更改。控制台说此行 a [ i ][ j ] = unos.nextInt(); 中的方法 create 有问题,但是如果我更改此行 private int[ ][ ] a = new int[n][m]; 并输入任何数字,如 [3][4],则程序可以工作,但使用 [n] [m] 它没有,你们能帮我吗,这段代码有什么问题。控制台:a[1][1]=线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:0 提前致谢..

import java.util.Scanner;

public class Matrica {
private int n, m;
private Scanner unos = new Scanner(System.in);

public void dimensions() {
System.out.print("n: ");
n = unos.nextInt();
System.out.print("m: ");
m = unos.nextInt();

}

private int[][] a = new int[n][m]; // if i put [2][2] or any other number, instead [n][n], program works

public void create() {
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
System.out.print("a[" + (i + 1) + "][" + (j + 1) + "]=");
a[i][j] = unos.nextInt(); // console points that this is the problem
}
}

public void print() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.printf("%d\t", a[i][j]);
}
System.out.println();
}
}
}

最佳答案

问题是

private int[][] a = new int[n][m]; 

在构造函数中的代码执行之前执行。也就是说,当nm尚未设置时,new正在执行,此时它们已初始化为0默认情况下。因此它分配一个没有行或列的数组。

要解决此问题,请将上面的内容更改为

private int[][] a;

并在设置 nm 后在构造函数中初始化它:

a = new int[n][m];

有关创建实例时执行顺序的更多信息,请参阅 this section of the JLS .

关于java - 二维数组、方法和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205736/

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