黑马程序员技术交流社区

标题: 输出结果和执行步骤是啥? [打印本页]

作者: 〃Mr.Zぐ    时间: 2013-4-4 16:31
标题: 输出结果和执行步骤是啥?
  1. public class Test
  2.   {
  3.           public static void main(String args[ ])
  4.           {
  5.                 int i , s = 0 ;
  6.                 int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90         }
  7.           for ( i = 0 ; i < a.length ; i ++ )
  8.         {                 
  9.                 if ( a[i]%3 = = 0 ) s += a[i] ;  
  10.           System.out.println("s="+s);
  11.         }
  12.   }
复制代码

作者: Friendy89    时间: 2013-4-4 17:50
你代码错中少了一个大括号
最终输出结果是s=0,0,30,30,30,90,90,90,180
步骤:当i=0时,a[0]=10 %3不等于0所以直接输出s的值0
          当i=1时,同i=0都是直接输出s的初始化值0
        当i=2时,a[2]=30%3=0所以执行s+=a[2]结果是0+30=30
       当i=3和i=4时a[i]%3都不为0,但是此时s的值已变成a[2]执行后的值30,所以也是输出30
      同理i=5时输出90 i=6和i=7时也是输出90,i=8时输出180
作者: 日三省    时间: 2013-4-4 17:54
/*
格式要注意下.可读性不好.导致书写错误不太好.
*/
public class Test2
{
          public static void main(String args[ ])
          {
                                int i , s = 0 ;
                                int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90         };    //未加分号
                               
                                for ( i = 0 ; i < a.length ; i ++ )
                                {                  
                                        if ( a % 3 == 0 )            // 取模这里加了空格.
                                        s += a ;  
                                        System.out.println("s="+s);
                                }
        }
}

你是要找出该数组中能被3整除的元素,然后累加起来.
修改了几个书写错误哦  后跑出了结果.
s=0
s=0
s=30
s=30
s=30
s=90
s=90
s=90
s=180


分享下马士兵老师的书写格式总结:

程序编写格式:  原则,让别人看着 清楚,舒服

1.大括号对齐
2.遇到 左大括号{    缩进                             
   缩进用tab/   返回去用shift+tab
3.每个语句块之间 空1行
4.运算符 两边 加空格  ,对于空隙本身就比较大的 就不用了  如for  
5.并排语句之间 加空格
6.成对编程 {} () /* */ []






作者: 刘吉庆    时间: 2013-4-4 17:56
首先这个代码会报Error,其中问题 如下:
1. 缺语句结束符;应改为:int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90         } ;
2. 比较运算符"=="中间不应有空格;应改为:if ( a%3 = = 0 ) s += a ;
3. 代码最后缺少结束符"}"。

代码执行结果为:
s=0
s=0
s=30
s=30
s=30
s=90
s=90
s=90
s=180

执行过程为:
1.变量初始化
   int i , s = 0 ;
    int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90         }
2. 执行循环语句,如条件成立执行循环体中的代码,如不成立执行其后代码
for ( i = 0 ; i < a.length ; i ++ )
3. 再执行判断语句,如果a模3等于0,那s =  s + a,反之不执行s += a
if (a % 3 == 0)  s += a;
4. 执行输出语句:System.out.println("s=" + s);
5.执行i++;
6.返回执行过程2。

作者: 杨成    时间: 2013-4-4 18:15
这是一个遍历长度为9的一维数组,并将遍历到的数组中元素能被3整除的元素值进行叠加,所以在a数组中,满足被3整除的只有30,60,90.它们相加的结果就是180.
作者: 庞立森    时间: 2013-4-4 19:06
输出结果为
s=0
s=0
s=30
s=30
s=30
s=90
s=90
s=90
s=180

你应该注意自己的代码书写格式,格式写的好,不容易出错,别人看着也舒服
其次就是你的代码错误比较多int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90         }后面没有分号
if)()后面最好有大括号,不过没有大括号系统默认只执行一行代码,如果你if()后面有多行代码,你就必须加上大括号
作者: lyg2013    时间: 2013-4-5 09:05
public class Test
{
        public static void main(String args[ ])
        {
              int i , s = 0 ;
              int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90};
        for ( i = 0 ; i < a.length ; i ++ )
      {                  
              if ( a[i]%3 == 0 )
                      s += a[i] ;  
        System.out.println("i="+i+","+"s="+s);
      }
   }
}
i=0,s=0
i=1,s=0
i=2,s=30
i=3,s=30
i=4,s=30
i=5,s=90
i=6,s=90
i=7,s=90
i=8,s=180

初学者这样写看的更直观点,不知道代码执行顺序可以加输出语句。



作者: 〃Mr.Zぐ    时间: 2013-4-5 17:02
谢谢楼上各位细心的回复,中肯的建议,我会书写越来越规范的




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