黑马程序员技术交流社区

标题: 自己写的代码,不知道为什么输出的结果是10 [打印本页]

作者: 张金    时间: 2012-9-21 22:26
标题: 自己写的代码,不知道为什么输出的结果是10
本帖最后由 张金 于 2012-9-22 20:46 编辑

class  shui
{
        public static void main(String[] args)
        {
                int x = 1;
                int y = 1;
                int z = 1;
                int count =0;
                while(x<=10 || y<=10 || z<=10)
                {
                if(x*x*x+y*y*y+z*z*z<=999 && x*x*x+y*y*y+z*z*z>=100);
                {
                count++;
                }
                x++;
                y++;
                z++;
                }
                System.out.println("count="+count);
        }
}
自己乱写的,不知道,为什么结果输出是10;
作者: 尤圣回    时间: 2012-9-21 22:35
while(x<=10 || y<=10 || z<=10)     //因为只循环10次
                {
                if(x*x*x+y*y*y+z*z*z<=999 && x*x*x+y*y*y+z*z*z>=100);   //这句代码根本没起到作用

                {
                count++;
                }

作者: 王自强    时间: 2012-9-21 22:53
class  shui
{
        public static void main(String[] args)
        {
                int x = 1;
                int y = 1;
                int z = 1;
                int count =0;
                while(x<=10 || y<=10 || z<=10)
                {
                if(x*x*x+y*y*y+z*z*z<=999 && x*x*x+y*y*y+z*z*z>=100)//把 ; 去掉
                {
                count++;
                System.out.println("x="+x+"x*x*x+y*y*y+z*z*z="+3*x*x*x);
                }
                x++;
                y++;
                z++;
                }
                System.out.println("count="+count);
        }
}

作者: 张忠豹    时间: 2012-9-22 16:04
public static void main(String[] args) {
                int x = 1;
                int y = 1;
                int z = 1;
                int count = 0;
                //while循环用于控制循环是否继续进行的判断条件
                while (x <= 10 || y <= 10 || z <= 10) {
                        //if条件判断,也许我们会把注意力都集中到这上面,可是千万要小心,因为其后面有;结束符,它是一条完整的代码,就其在本函数中是没有任何用的,如果硬说有用的话,那就是迷惑大家的
                        if (x * x * x + y * y * y + z * z * z <= 999&& x * x * x + y * y * y + z * z * z >= 100);
                        //有意思的这一段代码:在Java中有一个名称叫做局部代码块,在这个while循环判断条件满足的情况下,count变量的值就会自增1
                        {
                                count++;
                        }
                        //下面三句话,就不用说了
                        x++;
                        y++;
                        z++;
                }
                System.out.println("count=" + count);
        }

Java是博大精深的,上面用到了局部代码块,楼主可以多查以下资料,不光是局部代码块,还有构造代码块、静态代码块
作者: 明光照    时间: 2012-9-22 16:23
你在if判断语句的后面加了一个分号。然后把count++加上了大括号。楼主的代码相当于这样的。
class  shui
{
         public static void main(String[] args)
        {
                 int x = 1;
                 int y = 1;
                 int z = 1;
                 int count =0;
                 while(x<=10 || y<=10 || z<=10)
                 {
                 count++;
                 x++;
                 y++;
                 z++;
                 }
                 System.out.println("count="+count);
         }
}
作者: 邓利军    时间: 2012-9-22 18:55
本帖最后由 邓利军 于 2012-9-22 19:45 编辑

楼主,我告诉你为什么你的结果是10.
因为你这语句后面有个分号";" if(x*x*x+y*y*y+z*z*z<=999 && x*x*x+y*y*y+z*z*z>=100);
加了分号意思是:你这代码块结束了,if 和while后面都不能带分号.
你加了分号,此句条件表达式无效了,然后相当于循环执行以下代码
                 int x = 1;
                 int y = 1;
                 int z = 1;
                 int count =0;
                 while(x<=10 || y<=10 || z<=10)
                {
                      count++;
                }
                 x++;
                 y++;
                 z++;
x,y,x,从1到10循环,但这循环没有用了,无输出,count从0加1一直到10,x<=10 || y<=10 || z<=10条件满足后,count=10,然后才开始执行这一句输出语句
System.out.println("count="+count);
所以输出结果是10,
________________________________________________________________________________

楼主,你列出那样100到999的条件,是想得到这样的结果吧???????

x=4,x*x*x+y*y*y+z*z*z=192
x=5,x*x*x+y*y*y+z*z*z=375
x=6,x*x*x+y*y*y+z*z*z=648
count=3

那么代码可以这样写:
class  shui
{
         public static void main(String[] args)
         {
                 int x = 1;
                 int y = 1;
                 int z = 1;
                 int count =0;
                 while(x<=10 || y<=10 || z<=10)
                  {
                   int sum=x*x*x+y*y*y+z*z*z;
                   if(sum<=999 && sum>=100)
                  {
                   count++;
                System.out.println("x="+x+",x*x*x+y*y*y+z*z*z="+sum);
      }
                 x++;
                 y++;
                 z++;
                 }
                 System.out.println("count="+count);
         }
}

如果有什么问题请楼主回复,版主,我第一次回答问题,此题技术含量不高,揣摩楼主想法技术含量还可以,望能给分,以安慰我受伤的心灵!!!!万分感谢版主!!!





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