| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖
标题:关于数组 报错但是可以运行
只看楼主 加入收藏
chenloveyou
Rank: 1
来 自:西安
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-12-17
结帖率:20%
收藏
 问题点数:0 回复次数:7 
关于数组 报错但是可以运行
程序代码:
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)
报错为什么 ?
2013-04-27 16:02
代码哥
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-21
收藏
得分:0 
报错原因是下标出界
printlnth3方法中a.length大于b.length所以没有b[5] b[6] b[7]
2013-04-27 16:08
代码哥
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-21
收藏
得分:0 
把print3中的a.length改为b.length就可以了
2013-04-27 16:09
代码哥
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-21
收藏
得分:0 
还有类名最好大写
System.out.println("a["+i+"]= " +a[i]);     //变化的数据表示有些不懂
你可以用System.out.printf进行格式控制,跟c中的printf一样用
2013-04-27 16:14
代码哥
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-21
收藏
得分:0 
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]));
         }
     }
 }
改动后的
2013-04-27 16:24
星112
Rank: 5Rank: 5
来 自:山西朔州
等 级:职业侠客
威 望:2
帖 子:94
专家分:342
注 册:2012-6-22
收藏
得分:0 
很明显的是数据越界的错误,楼主应该注意这个异常ArrayIndexOutOfBoundsException,a的长度大于b的长度,b就会越界,可以这么试试将for循环里的a.length改为b.length我想就不会出现这种问题
2013-04-27 16:29
chenloveyou
Rank: 1
来 自:西安
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-12-17
收藏
得分:0 
回复 6楼 星112
谢谢回复!
2013-04-27 16:45
chenloveyou
Rank: 1
来 自:西安
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-12-17
收藏
得分:0 
回复 5楼 代码哥
谢谢啊
2013-04-27 16:46
快速回复:关于数组 报错但是可以运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023695 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved