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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zhangx 于 2013-4-13 10:48 编辑

第一个:
public class Demo{
public static void main(String args[]){
  int a=1 ;
  int b=0 ;
  int c=0 ;
  int temp;
  for(;a<10;a++){
   for(;b<10;b++){
    for(;c<10;c++){
     temp=a*a*a+b*b*b+c*c*c ;
      if(temp==100*a+10*b+c){
         System.out.println(temp);
      }
     }
    }
   }
}
};
第二个:
public class Demo{
public static void main(String args[]){
  int temp;
  for(int a=1 ;a<10;a++){
   for(int b=0 ;b<10;b++){
    for(int c=0 ;c<10;c++){
     temp=a*a*a+b*b*b+c*c*c ;
      if(temp==100*a+10*b+c){
         System.out.println(temp);
      }
     }
    }
   }
}
};
第一个代码到底错在哪里?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 hacket 于 2013-4-13 01:48 编辑
  1. public class Demo
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 int a=1 ;
  6.                 int b=0 ;
  7.                 int c=0 ;
  8.                 int temp;
  9.                 int count = 0;
  10.                 for(;a<10;a++)
  11.                 {
  12.                         System.out.println("a : "+a);
  13.                         for(;b<10;b++)
  14.                         {
  15.                                 System.out.println("b : "+b);
  16.                                 for(;c<10;c++)
  17.                                 {
  18.                                         count++;//计数
  19.                                         System.out.println("c : "+c);
  20.                                          temp=a*a*a+b*b*b+c*c*c ;

  21.                                          if(temp==100*a+10*b+c)
  22.                                          {
  23.                                                          System.out.println(temp);
  24.                                          }
  25.                                 }
  26.                         }
  27.                 }
  28.                 System.out.println("count : "+count);
  29.         }
  30. }
复制代码
在第一个代码中,添加相应的输出语句,加个计数的count,第二个代码中也在相应的位置添加一模一样的,运行一下你就知道了,第一个代码中,count只有10,而第二个有900
,这个为什么呢?我的理解是这样的,定义在for里面的值,一出for就释放了值,而定义在外面的变量,在for结束后,内存还没有释放掉,也就是还有值,第一份代码,当c所在的for
运行完后,c为9了,b运行完后也为9,这时a++,a为2了,由于此时变量是定义在for外面,值没有释放,b还为9,所以下面的for循环就不进行了,然后a继续自增,直到程序结束,
这就是我所理解的,看对你有用吗?
  1. a : 1
  2. b : 0
  3. c : 0
  4. c : 1
  5. c : 2
  6. c : 3
  7. c : 4
  8. c : 5
  9. c : 6
  10. c : 7
  11. c : 8
  12. c : 9
  13. b : 1
  14. b : 2
  15. b : 3
  16. b : 4
  17. b : 5
  18. b : 6
  19. b : 7
  20. b : 8
  21. b : 9
  22. a : 2
  23. a : 3
  24. a : 4
  25. a : 5
  26. a : 6
  27. a : 7
  28. a : 8
  29. a : 9
  30. count : 10
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
hacket 发表于 2013-4-13 01:47
在第一个代码中,添加相应的输出语句,加个计数的count,第二个代码中也在相应的位置添加一模一样的,运行 ...

太感谢你了
回复 使用道具 举报
zhangx 发表于 2013-4-13 10:47
太感谢你了

:lol不客气。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马