标题:数组输出为什么错了?
只看楼主
wu2782641803
Rank: 2
等 级:论坛游民
帖 子:65
专家分:46
注 册:2013-10-28
结帖率:88.24%
已结贴  问题点数:20 回复次数:7 
数组输出为什么错了?
public class Wu {
    public static void main(String [] args)
    {

    int x=0,y=0;
    int array[]=new int [100];
    for(int i=1;i<=100;i++)
        {array[i]=y+i;
        }
    for(int n:array)
    {    x=x+n;
   
    }
     System.out.println(x);
     
    }
    }
搜索更多相关主题的帖子: public 
2014-04-16 16:19
xixiqiqi
Rank: 2
等 级:论坛游民
帖 子:22
专家分:71
注 册:2013-10-10
得分:4 
public class Wu {
    public static void main(String [] args)
    {

    int x=0,y=0;
    int array[]=new int [100];
    for(int i=1;i<=100;i++)      // 当i等于100时,会产生数组下标越界异常
                                 // 改为for(int i=0;i<100;i++)
        {array[i]=y+i;           // 改为array[i]=y+(i+1);
        }
    for(int n:array)
    {    x=x+n;
   
    }
     System.out.println(x);
     
    }
    }
2014-04-17 08:46
黄悦泽
Rank: 1
来 自:广东省河源市龙川县
等 级:新手上路
帖 子:2
专家分:4
注 册:2014-4-14
得分:4 
回复 2 楼 xixiqiqi
可以告诉我:
for(int n:array){
x=x+n;
}
是什么意思吗?主要是那个int n :array?
他是一种什么方式(形式)??

永不言弃...
2014-04-17 10:47
java小蚂蚁
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:上海
等 级:贵宾
威 望:18
帖 子:558
专家分:2186
注 册:2013-7-2
得分:4 
for循环的一种表现方式

学海无涯#¥%……&*(
2014-04-17 13:49
吴乐
Rank: 2
等 级:论坛游民
帖 子:5
专家分:18
注 册:2013-12-11
得分:4 
for(int i=0;i<100;i++)改成这个就好啦。数组的ary[0]就代表数组的第一位!!
2014-04-17 19:31
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
得分:4 
修改后的代码如下:
程序代码:
public class Wu {

    public static void main(String[] args) {

        int x = 0, y = 0;
        int array[] = new int[100];
        for (int i = 1; i < array.length; i++) { // for (int i = 1; i <= 100; i++) {
            array[i] = y + i;
        }
        for (int n : array) {
            x = x + n;

        }
        System.out.println(x);

    }
}


输出为:4950

数组array的大小确实是100,但是Java沿用C/C++的习惯,数组的下标是从0开始的
所以数组的有效下标为[0,99]

如果访问下标100的话,就会产生越界异常

运行程序时,会出现类似下面的输出,其中数字100为越界时的下标数值
数字9为抛出异常的代码的行数

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
    at Wu.main(Wu.java:9)
2014-04-19 19:59
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
得分:0 
回复 3 楼 黄悦泽
这里的“:”是Java为了防止访问数组时经常出现越界这种问题的一种语言层面的解决方案

:读作in,也就是在什么什么里面的意思

for(int n:array)可以理解为访问用在数组array中的元素n访问、遍历整个数组

类似于VB中的For Each语句
2014-04-19 20:03
鸥翔鱼游
Rank: 5Rank: 5
等 级:职业侠客
帖 子:182
专家分:323
注 册:2014-4-19
得分:0 
观摩技术性回复
2014-04-24 14:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-430182-1-1.html




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

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