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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class  Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int i=2;
  6.                 for(i = 2; i <= 30; i++)
  7.                 {
  8.                                 for(int j=1 ;j<=i ; j++)
  9.                                 {
  10.                                                 if(i%j==0)
  11.                                                         {
  12.                                                                 break;
  13.                                                         }
  14.                                                 else       
  15.                                                         System.out.println("质数"+i);
  16.        
  17.                                 }
  18.                 }
  19.         }
  20. }
复制代码
错在哪儿呢 ???

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

10 个回复

倒序浏览
当你j=1,  符合if条件 直接就跳出循环了  ....出结果就坏了

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
2/1 余数=0 ...
回复 使用道具 举报
呃。。。我一直当成1除2 了 太低级了。。。
回复 使用道具 举报
应该把int i=2定义成局部变量!当i=2,j=1时i%j==0,执行break()跳出循环,然后下次在进入循环时还是重复执行这个操作,固永远不会进入到else语句中!

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
应该把int i=2定义成局部变量!当i=2,j=1时i%j==0,执行break()跳出循环,然后下次在进入循环时还是重复执行这个操作,固永远不会进入到else语句中!
回复 使用道具 举报
第一次循环的时候,i=2,j=1
    i%j==0满足了if语句执行了break,所以没有打印结果

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
哎 上面的代码太乱了。。。结果都不正确现在附上解决后的代码
  1. class  Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int i=2;
  6.                 int m;
  7.                 for(i = 2; i <= 30; i++)
  8.                 {
  9.                                 boolean b = false;
  10.                                 for(int j=2 ;j< i; j++)
  11.                                 {
  12.                                                 if(i%j==0)
  13.                                                         {
  14.                                                                         b=false;
  15.                                                                         break ;
  16.                                                         }
  17.                                                 else
  18.                                                         b=true;
  19.                                 }
  20.                                 if(b)
  21.                                 System.out.println("质数"+i);
  22.                                
  23.        
  24.                 }
  25.         }
  26. }
复制代码
回复 使用道具 举报
还是不够优化。。。
回复 使用道具 举报
for(int j=1 ;j<=i ; j++)

                                {

                                                if(i%j==0)

                                                        {

                                                                break;
                                                          }
这内循环 说明每次 j取开始的1 就符合条件,break跳出了,内循环停止了;
所以是输出不到结果的。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
pray 高级黑马 2014-4-26 06:11:43
11#
发贴看看自己积分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马