黑马程序员技术交流社区

标题: 判断101-200之间有多少个素数,不知道错在哪了? [打印本页]

作者: 伊特123    时间: 2015-7-8 23:21
标题: 判断101-200之间有多少个素数,不知道错在哪了?
class ExpendTest {
        public static void main(String[] args) {               
                System.out.println(printTest());
        }
        public static  int printTest() {
            w:for(int i=101;i<=200;i++)
                {
                 q:for (int j=2;j<=i-1;j++)
                         {
                                if (i%j!=0)
                                {
                                         continue;       
                                }else
                                {
                                        continue w;
                                }
                         }
                         return i;
                }
        }
}
作者: wx_HWRW5aF7    时间: 2015-7-9 00:13
你还没有理解透for循环。
作者: 梁思宇    时间: 2015-7-9 01:09
首先,假如方法没有进入for循环的话,你的printTest就没有返回值了
其次,当你的   j  的值为100的时候,内循环第一步判断,无法整除,于是continue重新循环,无法通过判断,不进入内循环,然后会继续往下走,而你的内循环下面是一个return i;   于是程序就将i的值101直接返回了.

作者: wing-SF    时间: 2015-7-9 09:48
本帖最后由 wing-SF 于 2015-7-9 09:50 编辑

w:和q:标识for循环吗?
作者: 桑小年    时间: 2015-7-9 10:26
最后是不能用return,return是结束一个方法的,所以当你程序运行的return时,就返回101,结束这个程序,所以最终结果是没有结果,因为你都没输出
作者: firwood    时间: 2015-7-9 14:10
打印语句需要放在循环体中。或者先将检测好的素数存储起来,然后统一输出。使用return的话,只能返回一个值,就结束方法了。如果需要使用这种return的方法的话,就需要在main中循环测试需要的数字了。
作者: chenwei520    时间: 2015-7-9 15:21
加油 小伙子。
作者: rose_xiaomei    时间: 2015-7-9 19:54
这种写法还是第一次见到,涨姿势了
作者: 进军黑马    时间: 2015-7-9 20:18
在学习                        
作者: tsiov    时间: 2015-7-9 20:33
return 就是结束。
作者: 木头人之死    时间: 2015-7-9 21:35
表示看不懂!!!!
package mianshixuqiu_com;
/*
* 找素数
*                 找出两个值之间的所有素数
*
*
* */
public class Test2 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                sushu(100,200);
        }
        //定义寻找素数的方法
        public static void sushu(int start,int end){
                int geshu=0;
               
                for(int k=start;k<=end;k++){
                        boolean b=true;
                for(int i=2;i<Math.sqrt(k);i++){
                        if(k%i==0){
                                b=false;
                                break;
                        }                       
                }
                if(b){
                        geshu++;
                        System.out.println(k);
                }
                }
                System.out.println(geshu+"素数个数");
        }
}





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