我正在尝试编写一个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;
}
我不认为这是正确的,因为我已经做了一些测试而且他们失败了。我究竟做错了什么?感谢
答案 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
会有一些值)