当前位置: 代码迷 >> Java相关 >> 大家来看看这个错误!
  详细解决方案

大家来看看这个错误!

热度:228   发布时间:2006-12-07 13:02:12.0
大家来看看这个错误!

public static void main(String args[])
{
System.out.print("请输入方程组的维数:");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String s="";
int N=0,K=0;
try{ s=in.readLine();N=Integer.parseInt(s);}catch(IOException e){}
float a[][]=new float[N][N+1];
System.out.print("请输入方程的各系数:\n");
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N+1;j++)
{
System.out.print("a"+i+","+j+":");
try{

s=in.readLine();
a[i][j]=Float.parseFloat(s);
}catch(IOException e){System.out.println("a;fja");}
}

}

…………………………
…………………………
…………………………
}

}
}
输入数给a数组定初值时怎么输完四个后就出错呢?
请看如下运行结果:
C:\>java Jacobi
请输入方程组的维数:3
请输入方程的各系数:
a1,1:8
a1,2:-3
a1,3:2
a1,4:20
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Jacobi.main(Jacobi.java:19)

C:\>javac Jacobi.java

C:\>java Jacobi
请输入方程组的维数:3
请输入方程的各系数:
a1,1:5
a1,2:6
a1,3:2
a1,4:5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Jacobi.main(Jacobi.java:21)

C:\>

C:\>



----------------解决方案--------------------------------------------------------
这个很简单嘛,数据越界
你输入3是代表[3][4]
实际是你只能用到[2][3]
你的i和j都是从1开始的,所以错了,将i和j改成0
----------------解决方案--------------------------------------------------------
  相关解决方案