对 AtomicInteger 和打印二维数组的怀疑
doubts on AtomicInteger and on printing a bi-dimensional array
我今天有两个疑问。
1) 我正在尝试打印一个二维数组(矩阵 Nx)并且我正在使用此方法:
System.out.println(Arrays.toString(Matr));
矩阵只有整型变量。
这是输出,为什么?
[[I@15db9742, [I@6d06d69c, [I@7852e922, [I@4e25154f, [I@70dea4e, [I@5c647e05, ........etc
2) 使用 AtomicIntegers 我必须将所有矩阵设置为 0。我使用了以下代码:
AtomicInteger[][]Matr=new AtomicInteger[n][m];
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
Matr[i][j].set(0);
}
}
但老师的解法是:
AtomicInteger[][] A = new AtomicInteger[n][m];
for (int i = 0; i < A.length; i++)
for (int j = 0; j < A[i].length; j++)
A[i][j] = new AtomicInteger(0);
有区别吗?我的代码有错吗?
您的代码将抛出空指针异常,因为它试图将值设置为空对象。您必须先初始化变量,然后再设置值。
关于你的第一个问题使用
System.out.println(Arrays.deepToString(Matr));
我今天有两个疑问。 1) 我正在尝试打印一个二维数组(矩阵 Nx)并且我正在使用此方法:
System.out.println(Arrays.toString(Matr));
矩阵只有整型变量。
这是输出,为什么?
[[I@15db9742, [I@6d06d69c, [I@7852e922, [I@4e25154f, [I@70dea4e, [I@5c647e05, ........etc
2) 使用 AtomicIntegers 我必须将所有矩阵设置为 0。我使用了以下代码:
AtomicInteger[][]Matr=new AtomicInteger[n][m];
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
Matr[i][j].set(0);
}
}
但老师的解法是:
AtomicInteger[][] A = new AtomicInteger[n][m];
for (int i = 0; i < A.length; i++)
for (int j = 0; j < A[i].length; j++)
A[i][j] = new AtomicInteger(0);
有区别吗?我的代码有错吗?
您的代码将抛出空指针异常,因为它试图将值设置为空对象。您必须先初始化变量,然后再设置值。
关于你的第一个问题使用
System.out.println(Arrays.deepToString(Matr));