Java 为什么我在这个while循环中声明一个布尔值与在这个while循环中声明一个布尔值有关系? 公共类查找时间{ 公共静态void main(字符串[]args){ 素数的整数=50; 最后的整数=10; 整数计数=0; 整数=2; 布尔值isPrime=true; while(计数
,我假设您得到了正确的答案,但您不确定它是如何/为什么得到的 在Java 为什么我在这个while循环中声明一个布尔值与在这个while循环中声明一个布尔值有关系? 公共类查找时间{ 公共静态void main(字符串[]args){ 素数的整数=50; 最后的整数=10; 整数计数=0; 整数=2; 布尔值isPrime=true; while(计数,java,loops,boolean,Java,Loops,Boolean,,我假设您得到了正确的答案,但您不确定它是如何/为什么得到的 在之外声明isPrime而不起作用。为什么?因为如果在循环中找不到素数,则将isPrime设置为false…并且再也不会将其重置为true。因此,非素数之后的任何后续数字都将自动被删除默认为非素数 在中声明isPrime,而起作用。为什么?因为每次您找到素数或非素数时,您都会将isPrime重置回其原始值,并且可以并将相应地评估每个后续数的素数 如果你仍然无法理解,试着把它画出来 希望这能有所帮助。我们看到的是,你在中声明了isPri
之外声明isPrime
而不起作用。为什么?因为如果在循环中找不到素数,则将isPrime
设置为false
…并且再也不会将其重置为true
。因此,非素数之后的任何后续数字都将自动被删除默认为非素数
在中声明isPrime
,而起作用。为什么?因为每次您找到素数或非素数时,您都会将isPrime
重置回其原始值,并且可以并将相应地评估每个后续数的素数
如果你仍然无法理解,试着把它画出来
希望这能有所帮助。我们看到的是,你在中声明了isPrime
而循环:|是的,只要你得到前五十个素数,这是正确的。怎么了?我重新编辑了这个问题。我在循环外声明布尔值,而我只得到2和3。这现在就没有什么意义了,因为你得到了在while循环内外都定义了它。删除第二个isPrime上的布尔声明
public class FindPrimes {
public static void main(String[] args) {
int Number_of_prime = 50;
int number_of_final = 10;
int count = 0;
int number = 2;
boolean isPrime = true;
while (count < Number_of_prime) {
for (int divisor = 2; divisor <= number / 2; divisor++) {
if (number % divisor == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
count++;
if (count % number_of_final == 0)
System.out.println(number);
else
System.out.print(number + " ");
}
number++;
}
}
}