Java中的死代码

时间:2014-04-20 13:11:57

标签: java java-me

我在Project Euler中解决了关于Prime的问题3。我在java编码,但我得到了关于死代码的错误。 这是代码:

public class Prime {
public int isPrime(int n){
    if (n==2)  
        return 1;
    else
    {
        for(int i = 2; i <= (int) Math.sqrt(n) ; i++)
        {
            if (n % i == 0)
            {
                return 0;
            }
            else return 1;
        }
    }
    return 1;
}

谁告诉我为什么原因是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

你的for循环中有问题。要解决此问题,您应该将for循环更改为以下内容:

    for(int i = 2; i <= (int) Math.sqrt(n) ; i++)
    {
        if (n % i == 0)
        {
            return 0;
        }
    }

这样做的原因是因为你构建for循环的方式,它只会经历一次而且只经过一次。那是因为if (n % i != 0)然后你返回1并且for循环终止。你想要做的是等到循环遍历整个序列,然后返回1。

您在i++下收到警告的原因是,如上所述,由于循环只迭代一次,因此永远不会增加i

PS:在方法内返回会破坏它所在的循环。

答案 1 :(得分:1)

你永远不会到达结束返回1;

循环将在第一次迭代时返回

这更简单,更有效

class Prime {
    public int isPrime(int n) {
        for (int i = 2; i <= (int) Math.sqrt(n); i++) {
            if (n % i == 0) {
                return 0;
            }
        }
        return 1;
    }
}