确定数组的所有元素是否为素数

时间:2011-11-26 14:53:54

标签: java

我正在尝试编写一个java程序,它确定数组的所有元素是否都是素数。这是我的代码:

boolean allPrimes(int[] ade){
        int i = 0; //counter
        boolean Prime = true; //initial boolean value
        while (i<ade.length && !Prime){
            if (p.isPrime(ade[i])) //function which determines if an int is prime.
                Prime = true;
            else
                Prime = false;
            i=i+1;
            }
        return Prime;
    }

我不认为这是正确的,因为我已经做了一些测试而且他们失败了。我究竟做错了什么?感谢

6 个答案:

答案 0 :(得分:4)

你像这样初始化了布尔Prime

 boolean Prime = true;

这意味着你永远不会进入循环!将其初始化为“false”。 你在里面的任务也是错位的。

让你的代码工作 - 只需改变你的第二个条件

while (i<ade.length && !Prime)

while (i<ade.length && Prime)

答案 1 :(得分:2)

根本不要将值存储在变量中。执行循环并在您找到的第一个非素数值上返回false(如果您找到一个非素数值,则不能全部为素数,不再进行任何点处理),然后在循环后返回true(如果得到的话)在那里,他们都是素数。)

for (int i : ade) {
    if (!p.isPrime(i)) {
        return false;
    }
}
return true;

答案 2 :(得分:1)

您的Prime变量初始化为true,而条件!Prime表示错误。 你的while循环没有执行,并且evaulate行返回true。

答案 3 :(得分:1)

以johnbk所说的为基础:

boolean allPrimes(int[] ade){
        int i = 0; //counter
        boolean Prime = true; //initial boolean value
        while (i<ade.length){
            if (!p.isPrime(ade[i])) { //function which determines if an int is prime.
                Prime = false;
                break;
            }
            i=i+1;
        }
        return Prime;
}

这应该可以正常工作。循环遍历数组,当您找到非素数时,将Prime设置为false并跳出循环。

答案 4 :(得分:1)

我不是Java人,但在我看来,Prime的初始值应该是假的,不是真的,否则你永远不会进入你的while循环。

答案 5 :(得分:0)

您永远不会输入Prime = true;后的while循环,并且您正在检查while(i<ade.length && !Prime),这意味着while (true && false)(假设ade会有一些值)