黑马程序员技术交流社区

标题: 利用循环打印水仙花数问题 [打印本页]

作者: zhengtuwl    时间: 2015-11-10 22:46
标题: 利用循环打印水仙花数问题
  1. public class WhileFlowerDemo {
  2.         public static void main(String[] args) {
  3.                 int x = 100;
  4.                 int count =0;
  5.                  //int ge = x % 10;
  6.                  //int shi = x / 10 % 10;
  7.                  //int bai = x / 10 / 10 % 10;

  8.                 while (x < 1000) {
  9.                         int ge = x % 10;
  10.                         int shi = x / 10 % 10;
  11.                         int bai = x / 10 / 10 % 10;
  12.                         if (x == ge * ge * ge + shi * shi * shi + bai * bai * bai) {
  13.                                 System.out.println(x);
  14.                         count++;
  15.                         }
  16.                                 x++;
  17.                 }
  18.                 System.out.println("水仙花数一共是"+count+"个");
  19.         }
  20. }
复制代码


问:为什么int ge , int shi, int bai无法定义到循环外边?(也就是count变量下方,注释的地方)
      如果放到循环外边,打印结果会是0,且只有一个0.原因是什么呢?

作者: 木子子木    时间: 2015-11-10 23:06
因为要通过判断if里面的语句来确定是否要执行count++这条语句,所以若放循环外,会输出0
作者: zhengtuwl    时间: 2015-11-10 23:16
木子子木 发表于 2015-11-10 23:06
因为要通过判断if里面的语句来确定是否要执行count++这条语句,所以若放循环外,会输出0 ...

定义在循环体外面(count下方)应该也可以在整个方法中使用此变量把,比如count就是在循环外定义的,它在循环和if语句里面就能使用。
作者: 零尘    时间: 2015-11-11 00:47
你把循环这个封装成一个方法,然后把count作为参数传递就能避免这个问题

作者: 邸永明    时间: 2015-11-11 14:23
这里如果把它们放在外边,那么就是成员变量了,也就是说它们的值就是用x=100来计算的,后边不再变,所以你在while循环里               if (x == ge * ge * ge + shi * shi * shi + bai * bai * bai) {
                                System.out.println(x);
                               count++;
                        }
ge,shi,bai永远都是一个值,永远也就不跟x相等,不管循环多少次,都只会输出0
作者: zhengtuwl    时间: 2015-11-11 21:16
邸永明 发表于 2015-11-11 14:23
这里如果把它们放在外边,那么就是成员变量了,也就是说它们的值就是用x=100来计算的,后边不再变,所以你在whi ...

正解!
作者: 邸永明    时间: 2015-11-16 07:25
zhengtuwl 发表于 2015-11-11 21:16
正解!

哈哈,谢谢支持,互相帮助啊
作者: ln0491    时间: 2015-11-16 12:36
学习了。。。。。。。。不错




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