这是个找出101到200内质数的超级小菜例,呵呵还请大家帮下忙!!!
first:
public class TestSimple {
public static void main(String args[]) {
boolean sign = true;
for(int i=101;i<200;i+=2) {
for(int j=2;j<i;j++) {
if(i%j == 0) {
sign = false;
break;
}
}
if(!sign) {
continue;
}
System.out.print(i+" ");

}
}
}
second:
public class TestSimple {
public static void main(String args[]) {
for(int i=101;i<200;i+=2) {
boolean sign = true;
for(int j=2;j<i;j++) {
if(i%j == 0) {
sign = false;
break;
}
}
if(!sign) {
continue;
}
System.out.print(i+" ");

}
}
}

解决方案 »

  1.   

    因为第一个里sign 被初始化一次,而在第二个里每次循环都初始化,建议看看变量的作用域的相关知识
      

  2.   

    同意楼上,另外为什么不把判断是否是质数的过程封装成一个方法呢,程序看起来就好读的多了,下面是昨天为csnd的一个朋友写的你参考下.
            /**
     * @param args
     */
    public static void main(String[] args) {
    int num = Integer.parseInt(readSystemIn());
    for (int i = 1; i <= num; i++) {
    if (isPrime(i))
    System.out.println(i);
    }
    } /**
     * 判断一个数是否是素数
     * 
     * @param num
     * @return
     */
    private static boolean isPrime(int num) {
    for (int k = 2; k <= num/2; k++) {
    if (num % k == 0)
    return false;
    }
    return true;
    } /**
     * 从控制台读取一串字符串
     * 
     * @return
     */
    public static String readSystemIn() {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
    return br.readLine();
    } catch (IOException e) {
    e.printStackTrace();
    return null;
    }
    }
      

  3.   

    两点:
    一、像楼上各位说的一样,尽量写成面向对象的方式,容易阅读和检查二、第一个程序写错了,第二个是对的,所以差别大。
        第一个程序sign变量只在第一次赋值true。而第二个程序每次循环都将sign还原为true。
        第一个程序如果碰到一个非质数,sign永远是false,后面的语句System.out.print(i+" "); 就永远不会执行了