黑马程序员技术交流社区

标题: 关于for循环的一道题,有点不明白 [打印本页]

作者: 不抛弃不放弃    时间: 2013-11-11 23:08
标题: 关于for循环的一道题,有点不明白
本帖最后由 不抛弃不放弃 于 2013-11-11 23:33 编辑

/*比如 n=5,a=2
* 求一个式子S=a+aa+aaa+aaaa+aaaa,即S=2+22+222+2222+22222,其中S代表的是这些书的和
* n要求是从控制台输入的,
*/
public class Test_for {
/*
  * 思路:关键是如果求出a+aa+aaa+aaaa+aaaaa
  */
public static void main(String []args){
  System.out.println("请输入一个整数:");
  Scanner sc= new Scanner(System.in);
  int n=sc.nextInt();
  int s=0;
  int a=2;
  int t=0;
  for(int i=1;i<=n;i++){
   t=t*10+a;//这一步不明白 ,这不是不管怎么循环t都没变化吗?????
   s=s+t;
   System.out.println(t);
  }
  System.out.println(s);
}

}
在线等待哦   

作者: Sasson    时间: 2013-11-11 23:23
  1.         public static void main(String []args){
  2.                 System.out.println("请输入一个整数:");
  3.                 Scanner sc= new Scanner(System.in);
  4.                  int n=sc.nextInt();
  5.                  int s=0;
  6.                  int a=2;
  7.                  int t=0;

  8.                  for(int i=1;i<=n;i++){
  9.                         t=t*10+a;                        //第一次循环t=0+2=2,s=0+2=2;第二次循环t=2*10+2=22,s=22+2;
  10.                         s=s+t;                                //第三次循环t=22*10+2=222,t=222+22+2。。。。由此可以慢慢推下去
  11.                         System.out.println(t);
  12.                 }
  13.                 System.out.println(s);
  14.         }
复制代码

作者: 不抛弃不放弃    时间: 2013-11-11 23:32
Sasson 发表于 2013-11-11 23:23

哦 明白了 刚刚没想明白
作者: 王裕秋    时间: 2013-11-11 23:45
t是有变化的,当i=1时,t的初始值是0,在第一轮循环之后,t的赋值已经变成a了,也就算2;
                      当当i=1时,t的值是2传进去,在第二轮循环之后,t的赋值已经变成aa了,也就算22;
依次类推。
其实你可以把自己当做虚拟机,来读这些语句的运行顺序,慢慢就明白了
作者: RuntimeError!    时间: 2013-11-12 00:07
t是变量,等号是赋值~~~t=t*10+a;是把 t*10+a的值传给t  t就变成 10t+2了 不是一直不变~~~

作者: 不抛弃不放弃    时间: 2013-11-12 00:23
RuntimeError! 发表于 2013-11-12 00:07
t是变量,等号是赋值~~~t=t*10+a;是把 t*10+a的值传给t  t就变成 10t+2了 不是一直不变~~~
...

en 谢谢 回答  已经明白




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