我確定這是一個非常基本的問題,但無法理解爲什麼下面的FOR循環有效?Java For Loop條件測試
下面的代碼帶回了一組Prime,並按照它應該的方式工作。我理解使用平方根的整個數學推理,然而我的問題更多的是FOR語句的條件部分。
送入isPrime()
檢查的第一個參數是2,當然是Prime。第一個isPrime()
得到2的平方根〜1.4。
在這一點上,我感到困惑。從i = 2開始,明顯大於1.4,因此我的起始條件= root(即2 < = 1.4)未被滿足。 IF
聲明不應該運行,它應該返回沒有結果,但它確實。
在我看來,我不應該得到任何結果,直到我達到5,因爲2也超過3的平方根。我顯然沒有低估FOR
的初始化或條件方面聲明在這裏?有人可以幫助我的邏輯?
class BooleanTest{
public static void main(String[] arguments) {
int quantity = 10;
int numPrimes = 0;
int candidate = 2; //starting prime #
System.out.println("First " + quantity + " primes:");
while (numPrimes < quantity) {
if (isPrime(candidate)) { //if isPrime Method true
System.out.println(candidate);
numPrimes++;
}
candidate++;
}
}
public static boolean isPrime(int checkNumber) {
double root = Math.sqrt(checkNumber); //get square root of candidate
for (int i = 2; i <= root; i++) {
if (checkNumber % i == 0) { //if remainder of candidate/i = 0
return false; //because candidate is not prime. has factor other than 1 and self.
}
return true;
}
}
謝謝塞巴斯蒂安!因此,將for循環放在for循環之外,但仍在方法體內,即使for循環從未啓動,也會使布爾方法「default」爲true。這很有道理。謝謝! – user3095951