A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 不抛弃不放弃 于 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);
}

}
在线等待哦   

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

5 个回复

倒序浏览
  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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

回复 使用道具 举报

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

en 谢谢 回答  已经明白
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马