当前位置: 代码迷 >> Java相关 >> 关于数组 报错但是可以运行
  详细解决方案

关于数组 报错但是可以运行

热度:267   发布时间:2013-04-27 16:02:02.0
关于数组 报错但是可以运行
程序代码:

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楼 代码哥
谢谢啊
----------------解决方案--------------------------------------------------------
  相关解决方案