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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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 外循环里面就可以,搞不明白,谢谢了哈

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定!楼主加油。

查看全部评分

12 个回复

倒序浏览
你只有一个打印语句,count != 0 的话你就没有打印语句,控制台肯定没有结果输出的
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
当j=2时,内循环就执行了count++;
count就不在为0了。。你自然没法执行if(count==0)这个判断了。自然没有打印结果,
另外,你的count定义的是方法局部变量,通过双层for循环已经改变了它的值
回复 使用道具 举报

哦哦,那为啥在外循环里面就改变不了呢,3q
回复 使用道具 举报
Green.Jack 发表于 2014-10-7 17:01
哦哦,那为啥在外循环里面就改变不了呢,3q

你的程序里面 外循环语句体里面 是先执行内循环体  然后才是执行if(count == 0) 这时候count 的值已经在内循环里面被改变了 所以是永远不会执行if语句里面的
回复 使用道具 举报
MR.Sun 中级黑马 2014-10-7 18:57:34
7#
表示你的count不可能是0,所以结果是什么都没有。
回复 使用道具 举报
本帖最后由 〆_、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  
回复 使用道具 举报
。。。。。。。。。。。。。。。
回复 使用道具 举报
顺序执行到if的时候你的count明显不是0了所以没有输出语句
回复 使用道具 举报
count定义在循环里面的话,每次循环都会重新赋值为0,在外面则不会,所以第一次内循环结束后,count值已经不为0了,所以,你下面的打印语句永远执行不到。
回复 使用道具 举报
你的count在内循环时不可能再为0了,怎么可能执行打印语句呢
回复 使用道具 举报
局部变量在一对{}中有效
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马