非常奇怪,为什么这个小代码抛出ArrayIndexOutOfBoundsException
class sum
{
public static void main(String[] arg)
{
int arr[][]=new int[2][3];
arr[0][0]=4;
arr[0][1]=2;
arr[0][2]=5;
arr[1][0]=5;
arr[1][1]=2;
arr[1][2]=6;
for (int i=0; i < 2; i++)
{
for (int j=0; j < 3; j++)
{
System.out.print(arr[j][i]);
}
System.out.println();
}
}
}
当我改变这样的序列时
是System.out.print(ARR [j]的[I]);
我得到了我期望的输出。
如何打印列的总和?
答案 0 :(得分:3)
您提供的代码将给出ArrayIndexOutOfBoundsException。因为在内部循环的第3次迭代中,你要求arr [2] [i](它不存在)。如果您想要不同类型的输出,可以尝试
for (int j=0; j < 2; j++)
{
for (int i=0; i < 3; i++)
{
System.out.print(arr[j][i]);
}
System.out.println();
}
要添加列,请创建局部变量sumc,然后使用此循环
for(int i=0; i < 3; i++)
{
for(int j=0;j<2;j++)
{
sumc += arr[i][j];
}
System.out.println(sumc);
sumc = 0;
}
答案 1 :(得分:2)
这个小代码抛出的原因很奇怪 ArrayIndexOutOfBoundsException异常
虽然代码很小,但例外情况不会显示任何kindness
。
您的数组的第一个维度的大小最多为2个元素,因此存在索引0
和1
。您的j
值最多为2
,您在第一维上应用j当j
转到2
时,因为它是一个不存在的索引,您将获得ArrayIndexOutOfBoundsException
。
您可能不小心输入了arr[j][i]
而不是arr[i][j]
。
编辑:获取列的总和
import java.util.Scanner;
/**
* @author Nathan2055
*/
public class Tester {
public static void main(String[] arg)
{
int arr[][]=new int[2][3];
int sums[]=new int[3];
arr[0][0]=4;
arr[0][1]=2;
arr[0][2]=5;
arr[1][0]=5;
arr[1][1]=2;
arr[1][2]=6;
for (int i=0; i < 2; i++)
{
int sum=0;
for (int j=0;j < 3; j++)
{
System.out.print(arr[i][j]+" ");
sum+=arr[i][j];
}
System.out.println();
sums[i]=sum;
}
for(int i=0;i<3;i++){
System.out.print(sums[i]+" ");
}
}}
答案 2 :(得分:0)
您正在尝试访问不可用的数组索引。 我稍微编辑了你的代码并打印了: -
public static void main(String[] args) {
int arr[][]=new int[2][3];
arr[0][0]=4;
arr[0][1]=2;
arr[0][2]=5;
arr[1][0]=5;
arr[1][1]=2;
arr[1][2]=6;
for (int i=0; i < 2; i++)
{
System.out.println(">>> i = " + i);
for (int j=0; j < 3; j++)
{
System.out.println(">>> j = " + j + "\n");
System.out.print(arr[j][i] + "\n");
}
System.out.println();
};
}
以下是您的代码输出: -
>>> i = 0
>>> j = 0
4 // [0][0]
>>> j = 1
5 // [1][0]
>>> j = 2 // now here you are trying to access [2][0] which is not available and it shows the ArrayIndexOutOfBoundsException error.
添加列的代码: -
public static void main(String[] args) {
int arr[][]=new int[2][3];
arr[0][0]=4;
arr[0][1]=2;
arr[0][2]=5;
arr[1][0]=5;
arr[1][1]=2;
arr[1][2]=6;
for (int i=0; i < 2; i++)
{
int sum= 0;
System.out.println(">>> i = " + i);
for (int j=0; j < 3; j++)
{
System.out.println(">>> j = " + j + "\n");
System.out.print(arr[i][j] + "\n");
if(i < 1){
sum += arr[i][j] + arr[i+1][j]; //sum of column
System.out.print("sum >> " + sum + "\n");
}
}
System.out.println();
};
}