关于数组 报错但是可以运行
程序代码:
public class arrarys {
int a[] = new int[]{1,2,3,4,5,6,7,8};
int b[] = new int[]{9,10,11,12,13};
public static void main(String[] arg)
{
arrarys s = new arrarys();
s.print1();
s.print2();
s.print3();
s.print4();
}
void print1()
{
for(int i=0;i<a.length;i++)
{
System.out.println("a["+i+"]= " +a[i]); //变化的数据表示有些不懂
}
System.out.println("数组啊的长度为: "+a.length);
}
void print2()
{
for(int i=0;i<b.length;i++)
{
System.out.println("b["+i+"]= "+b[i]);
}
System.out.println("数组b的长度为: "+b.length);
}
void print3()
{
for(int i=0;i<a.length;i++)
{
System.out.println("c["+i+"]= "+(a[i]*b[i]));
}
System.out.println("数组c的长度为: "+b.length);
}
void print4()
{
for(int i=0;i<b.length;i++)
{
System.out.println("d["+i+"]= "+(a[i]*a[i]*b[i]-b[i]));
}
}
}
a[0]= 1
a[1]= 2
a[2]= 3
a[3]= 4
a[4]= 5
a[5]= 6
a[6]= 7
a[7]= 8
数组啊的长度为: 8
b[0]= 9
b[1]= 10
b[2]= 11
b[3]= 12
b[4]= 13
数组b的长度为: 5
c[0]= 9
c[1]= 20
c[2]= 33
c[3]= 48
c[4]= 65
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at arrarys.print3(arrarys.java:33)
at arrarys.main(arrarys.java:10)
报错为什么 ?
----------------解决方案--------------------------------------------------------
报错原因是下标出界
printlnth3方法中a.length大于b.length所以没有b[5] b[6] b[7]
----------------解决方案--------------------------------------------------------
把print3中的a.length改为b.length就可以了
----------------解决方案--------------------------------------------------------
还有类名最好大写
System.out.println("a["+i+"]= " +a[i]); //变化的数据表示有些不懂
你可以用System.out.printf进行格式控制,跟c中的printf一样用
----------------解决方案--------------------------------------------------------
public class Arrays{
int a[] = new int[]{1,2,3,4,5,6,7,8};
int b[] = new int[]{9,10,11,12,13};
public static void main(String[] args)
{
Arrays s = new Arrays();
s.print1();
s.print2();
s.print3();
s.print4();
}
void print1()
{
for(int i=0;i<a.length;i++)
{
System.out.println("a["+i+"]= " +a[i]); //变化的数据表示有些不懂
}
System.out.println("数组啊的长度为: "+a.length);
}
void print2()
{
for(int i=0;i<b.length;i++)
{
System.out.println("b["+i+"]= "+b[i]);
}
System.out.println("数组b的长度为: "+b.length);
}
void print3()
{
for(int i=0;i<b.length;i++)
{
System.out.println("c["+i+"]= "+(a[i]*b[i]));
}
System.out.println("数组c的长度为: "+b.length);
}
void print4()
{
for(int i=0;i<b.length;i++)
{
System.out.println("d["+i+"]= "+(a[i]*a[i]*b[i]-b[i]));
}
}
}
改动后的
----------------解决方案--------------------------------------------------------
很明显的是数据越界的错误,楼主应该注意这个异常ArrayIndexOutOfBoundsException,a的长度大于b的长度,b就会越界,可以这么试试将for循环里的a.length改为b.length我想就不会出现这种问题
----------------解决方案--------------------------------------------------------
回复 6楼 星112
谢谢回复! ----------------解决方案--------------------------------------------------------
回复 5楼 代码哥
谢谢啊 ----------------解决方案--------------------------------------------------------