黑马程序员技术交流社区

标题: 求助一下,这段代码我为什么打不出来结果呢 [打印本页]

作者: Green.Jack    时间: 2014-10-7 13:04
标题: 求助一下,这段代码我为什么打不出来结果呢
public class Practice {

        public static void main(String[] args) {
                int count = 0;
                for(int i=10; i<= 99; i++){
       
                        for(int j=2; j<i;j++){
                               
                                if (i%j==0) {
                                        count++;
                                }
                        }
                        if (count==0) {
                                System.out.println(i);
                        }
                }               
        }       
}

我把count 外循环里面就可以,搞不明白,谢谢了哈


作者: hike_2008    时间: 2014-10-7 13:37
你只有一个打印语句,count != 0 的话你就没有打印语句,控制台肯定没有结果输出的
作者: 朴日男    时间: 2014-10-7 14:00
  1. public class Practice
  2. {

  3.     public static void main(String[] args)
  4.     {
  5.         int count = 0;
  6.         for(int i=10; i<= 99; i++)
  7.         {
  8.             for(int j=2; j<i; j++)
  9.             {
  10.                 if (i%j==0) //10%2=0, 有满足条件的, count的值就不为0了.
  11.                 {
  12.                     count++;
  13.                 }
  14.             }
  15.             if (count==0) //这句在外循环内,内循环已经把count值改变了, 永远也不为0, 咋打印...
  16.             {
  17.                 System.out.println(i);
  18.             }
  19.         }
  20.     }
  21. }
复制代码

作者: 嘿~~    时间: 2014-10-7 15:54
当j=2时,内循环就执行了count++;
count就不在为0了。。你自然没法执行if(count==0)这个判断了。自然没有打印结果,
另外,你的count定义的是方法局部变量,通过双层for循环已经改变了它的值
作者: Green.Jack    时间: 2014-10-7 17:01
朴日男 发表于 2014-10-7 14:00

哦哦,那为啥在外循环里面就改变不了呢,3q
作者: LL.t    时间: 2014-10-7 17:11
Green.Jack 发表于 2014-10-7 17:01
哦哦,那为啥在外循环里面就改变不了呢,3q

你的程序里面 外循环语句体里面 是先执行内循环体  然后才是执行if(count == 0) 这时候count 的值已经在内循环里面被改变了 所以是永远不会执行if语句里面的
作者: MR.Sun    时间: 2014-10-7 18:57
表示你的count不可能是0,所以结果是什么都没有。
作者: 〆_、Wali    时间: 2014-10-7 19:25
本帖最后由 〆_、Wali 于 2014-10-7 19:26 编辑

在内循环开始前就应该先将count赋值为0,这样count是否为0才能作为被计算的数是否为质数的标准,否则第一个不为质数的数执行内循环后,count就已经不为0了,你也不可能在打印出其他质数了!具体写法:
public class Practice
{

    public static void main(String[] args)
    {
        int count = 0;
        for(int i=10; i<= 99; i++)
        {
            count=0;
            for(int j=2; j<i; j++)
            {
                if (i%j==0) //10%2=0, 有满足条件的, count的值就不为0了.
                {
                    count++;
                }
            }
            if (count==0) //这句在外循环内,内循环已经把count值改变了, 永远也不为0, 咋打印...
            {
                System.out.println(i);
            }
        }
    }
}

不过最好的方法是使用一个boolean类型的判断标志,可以在程序执行开始之前定义 boolean flag =false;
再确定所判断的整数为质数时将flag置为true  
作者: 郭.威    时间: 2014-10-7 22:03
。。。。。。。。。。。。。。。
作者: wf111sxwf    时间: 2014-10-9 12:32
顺序执行到if的时候你的count明显不是0了所以没有输出语句
作者: 李天富    时间: 2014-10-9 16:36
count定义在循环里面的话,每次循环都会重新赋值为0,在外面则不会,所以第一次内循环结束后,count值已经不为0了,所以,你下面的打印语句永远执行不到。
作者: chenglove1201    时间: 2014-10-9 17:28
你的count在内循环时不可能再为0了,怎么可能执行打印语句呢
作者: 家进    时间: 2014-10-9 20:41
局部变量在一对{}中有效




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