黑马程序员技术交流社区

标题: 大家看看这段代码,我想从0加到10 [打印本页]

作者: 张浮生    时间: 2015-5-14 16:11
标题: 大家看看这段代码,我想从0加到10
  1. class Dome
  2. {
  3.   public static void main(String [] args)
  4.   {
  5.      int[] a=new int[10];
  6.      int sum=0;
  7.      for(int i=0;i<a.length;i++)
  8.      {
  9.         sum+=a[i];
  10.      }
  11.     System.out.println(sum);
  12.    
  13.   }
  14. }
复制代码

为什么结果会是0?我是想算0加到10
作者: mryangsir    时间: 2015-5-14 16:16
先要给数组赋值
作者: 破烂小白    时间: 2015-5-14 16:19
int[10]  长度是10 然后呢。。
作者: 张浮生    时间: 2015-5-14 16:23
mryangsir 发表于 2015-5-14 16:16
先要给数组赋值

如果我没理解错的话数组不需要值
作者: 张浮生    时间: 2015-5-14 16:24
破烂小白 发表于 2015-5-14 16:19
int[10]  长度是10 然后呢。。

在For循环中调用数组长度
作者: 油炸电视剧    时间: 2015-5-14 16:28
你的数组里面的值都是0 啊,你要给你的数组附上你想要的值,加起来才是你想要的值。
作者: 张浮生    时间: 2015-5-14 16:30
油炸电视剧 发表于 2015-5-14 16:28
你的数组里面的值都是0 啊,你要给你的数组附上你想要的值,加起来才是你想要的值。 ...

需要补代码?
作者: 冷月霜飞    时间: 2015-5-14 16:31
你创建的是一个数据类型为int ,长度为 10的数组,但是你并没有对这个数组中的每个元素进行赋值,所以,这个数组的每个元素在系统中默认的初始化值都为0;所以,10个0相加结果只能等于0,希望能解决你的疑惑
作者: 张浮生    时间: 2015-5-14 16:33
油炸电视剧 发表于 2015-5-14 16:28
你的数组里面的值都是0 啊,你要给你的数组附上你想要的值,加起来才是你想要的值。 ...

需要补代码?
作者: mryangsir    时间: 2015-5-14 16:44
数组需要初始化,不初始化没有意义,
作者: 小风1993    时间: 2015-5-14 16:58
int[] a=new int[10];这只是你定义了数组有多大,
for(int i=0;i<a.length;i++){
a[i]=1;
}这样才是赋值
作者: 二大爷    时间: 2015-5-14 17:50
没有给数组赋值  ,数组默认值是0.   所以相加是0
作者: guoqiangmailbox    时间: 2015-5-14 17:55
int[] a=new int[10]; 是创建一个能放10个整数的数组,数组的数据因为没有,默认都是零
作者: bboyXiaoNuo    时间: 2015-5-14 17:56
因为你的数组没有赋值,默认里面元素初始值都是0
作者: xicheng26    时间: 2015-5-14 17:57
数组没有赋值呀大哥。你光遍历数组了没有赋值。
作者: 你好明天    时间: 2015-5-14 18:42
你数组里面一个元素都没有啊
作者: zhangjnia    时间: 2015-5-14 18:43
你的数组里面都没赋值,当然得不到正确的值了,想从0加到10,为什么要用数组?
作者: Cat    时间: 2015-5-14 18:55
学习一下~
作者: 533洋洋    时间: 2015-5-14 18:55
感觉同上,
作者: tanzhixue    时间: 2015-5-14 19:20
你只是定义一个10位的数组 但是你没有给每个位赋值 所以默认都是0;而你sum+=a[i];相当于sum+=0;
作者: 杨春雨    时间: 2015-5-14 19:36
  1. public static void main(String[] args) {
  2.                 //初始化数组,这样初始化试试?
  3.                 int[] a = new int[]{1,2,3,4,5,6,7,8,9,10};
  4.                 //这个样子初始化是初始化了10长度的数组 并不是给这个数组赋值
  5.                 //数组没有初始化数组默认为0
  6.                 int[] b = new int[10];
  7.                 int sum = 0;
  8.                 for (int i = 0; i < a.length; i++)
  9.                 {
  10.                         sum += a[i];
  11.                         //System.out.println(b[i]);
  12.                 }
  13.                 //这样程序正常计算和
  14.                 System.out.println(sum);

  15.         }
复制代码

楼主没有过明白数组如和定义吧。看我上面的代码


QQ截图20150514193530.png (113.13 KB, 下载次数: 23)

QQ截图20150514193530.png

作者: 开到荼靡    时间: 2015-5-14 19:38
  方式1:
  class Dome
    {
      public static void main(String [] args)
      {
         int[] a=new int[10];
         int sum=0;
         for(int i=0;i<=a.length;i++)
         {
            sum+=i;
         }
        System.out.println(sum);
      
      }
    }
方式2:
    class Dome
    {
      public static void main(String [] args)
      {
         int sum=0;
         for(int i=0;i<10;i++)
         {
            sum+=i;
         }
        System.out.println(sum);
      
      }
    }



你要算0到10 没必要用数组吧
作者: 追梦德鲁    时间: 2015-5-14 20:22
多看视频 的加油
作者: 吴富其    时间: 2015-5-14 20:38
在使用new时候就开辟堆内存,new int[10]代表在数组内开辟了10个int类型的堆内存,而在最内存每个空间必须有值,int类型默认值为0,float类型默认值为0.0f,double类型默认值为0.0,引用型默认值为null,当你没赋值直接使用堆内存中的int类型数组时,运算都是拿0进行运算的
作者: shuadianqian8    时间: 2015-5-14 20:42
                                                        顶
作者: zoubing0405    时间: 2015-5-14 20:56
结果是零,定义一个数组后,默认值为0.所以结果是零,你需要给数组赋值才能得到你想要的结果
作者: openJAVA    时间: 2015-5-14 21:36
因为你的数组都是0
作者: shao122791159    时间: 2015-5-14 21:37
。。。。你数组里面没初始化值。。里面a[1]~a[10]里面全是0,你累加了结果当然是0
作者: 柒仴、看雲佉    时间: 2015-5-14 21:51
你这。。。。
作者: q8893616    时间: 2015-5-14 22:08
你给的这个数组没有赋值的  所有元素都是0加起来果断还是零撒
作者: 尹佳鑫    时间: 2015-5-14 22:08
你数组里根本没元素,就是说定义了却没初始化,元素是基本数值型的数组,默认元素值都是0,所以你只是加了10个0
作者: gaoer    时间: 2015-5-14 22:09
int [10]  值呢 、》?
作者: yuanhnu    时间: 2015-5-14 22:10
十个零相加当然是零
作者: 雪域星辰    时间: 2015-5-14 22:20
a里面没有数值啊,你只给了长度。。。怎么能用a[i]遍历。。。
作者: zhuankill    时间: 2015-5-14 22:41
都没赋值,数组的值都是默认的0,不管怎么加都是0
作者: 熬夜看书    时间: 2015-5-14 22:43
for(int i=0;i<a.length;i++){
a=i;
用这一句给你的数组赋值下,

作者: hellotaomi    时间: 2015-5-14 22:47
class Dome
{
  public static void main(String [] args)
  {
     int[] a=new int[10];
     int sum=0;
     for(int i=0;i<=a.length;i++)//0加到10,那就要包括10,改为 i<=a.length
     {
        a[i]=i;//增加这一句  
        sum+=a[i];
     }
    System.out.println(sum);
   
  }
}
作者: anywayDo    时间: 2015-5-14 23:47
张浮生 发表于 2015-5-14 16:23
如果我没理解错的话数组不需要值

是的呀。数组可以不初始化,int类型的数组,默认初始0哟。。所以不管怎么循环都是0相加,结果一定是0了。。
作者: 张浮生    时间: 2015-5-15 00:47
hellotaomi 发表于 2015-5-14 22:47
class Dome
{
  public static void main(String [] args)

加的那一句是不是意味着给数组赋值?
作者: jiangwenjun    时间: 2015-5-15 03:53
数组都没有东西。你只是定义了一个int类型的sum
作者: hellotaomi    时间: 2015-5-15 08:38
你不赋值,那你数组里面默认都是0了,那就是10个0相加了,你不是要从0加到10吗,那当然要把0到10这些数字赋值进去啊
作者: hellotaomi    时间: 2015-5-15 08:39
张浮生 发表于 2015-5-15 00:47
加的那一句是不是意味着给数组赋值?

对啊,就是把0到10赋值到数组中。
作者: guojiadui    时间: 2015-5-15 09:31
定义数组是就给个它赋值
作者: 赵旗    时间: 2015-5-15 09:36
这里其实用不到数组
int sum=0;
     for(int i=0;i<=10;i++)
     {
        sum+=i;
     }
    System.out.println(sum);
作者: 王先荣    时间: 2015-5-15 09:41
你上面的数组只是定义了,没有赋值,相当于int x;没有给他赋值,但有=语句了,默认给每个数组里面赋值0
作者: 张浮生    时间: 2015-5-15 10:30
赵旗 发表于 2015-5-15 09:36
这里其实用不到数组
int sum=0;
     for(int i=0;i

尝试用不一样的代码做出一样的结果。
作者: 星辉祝愿    时间: 2015-5-15 14:34
其实这里根本就不需要用到数组,不过用数组,就把“int[] a=new int[10];”改为“ int[] a=new int[]{0,1,2,3,4,5,6,7,8,9,10};”
作者: 晚风吹舟行    时间: 2015-5-15 14:39
数组的动态初始化只是定义了长度,然后由系统来赋默认值,int的默认值是0,所以不管你怎么加都会是0了!
作者: 晚风吹舟行    时间: 2015-5-15 14:43
本帖最后由 晚风吹舟行 于 2015-5-15 14:47 编辑

动态赋值:for(int i = 0;i < a.length ;i ++)                  {
                       int = i + 1
                   }


作者: yogkin    时间: 2015-5-15 14:47
本帖最后由 yogkin 于 2015-5-15 14:50 编辑

在int[]数组里面,每一个元素初始化值是0,而你for循环里面是把int[]数组的所有值相加,10个0相加,当然是0哈~如果你需要求0-10的和,可以这样:
int sum = 0;
for(int i = 0;i<=10,i++){
sum +=i;
}


作者: 冷雨敲窗被未温    时间: 2015-5-15 14:59
21楼正解!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2