我只是在真正地學習Java,通過網上和書本上的教程,所以請原諒我犯的任何基本錯誤。我不明白為什么if和else都在執行。
import java.io.*;
public class Primes {
static boolean prime(long num) {
boolean isPrime = false。
for (int i = 2; i <= num - 1; i ) {
if (num % i == 0) {
isPrime = false;
} else {
isPrime = true;
}
}
return isPrime;
}
static void generate(long max) {
long num = 2;
for (int i = 2; i <= max; i ) {
if (prime(num)) {
System.out.println(num)。
}
num ;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO 自動生成的方法存根。
BufferedReader br = new BufferedReader(new InputStreamReader(System. in))。)
System.out.println("最大素數?")。
int max = Integer.parseInt(br.readLine() )。
generate(max)。
}
}
如果我稍微改變一下代碼。它就會相應地作業。我是這樣修改代碼的。
static boolean prime(long num) {
boolean isPrime = true;
for (int i = 2; i <= num - 1; i ) {
if (num % i == 0) {
isPrime = false;
}
}
return isPrime;
}
但是我想知道為什么第一個條件不作業。
if(condition) {
//如果條件為真,將執行的代碼塊。
} else {
//如果條件為假,將執行的代碼塊。
}
在我的代碼中,條件如何才能既是真又是假。有誰能幫我解決這個問題?
uj5u.com熱心網友回復:
看看你的代碼吧:
boolean isPrime = false。
for (int i = 2; i <= num - 1; i ) {
if (num % i == 0) {
isPrime = false;
} else {
isPrime = true;
}
}
return isPrime;
假設num = 10。所以,回圈迭代這些步驟。 i = 2, i = 3, i = 4, i = 5, i = 6, i = 7, i = 8, i = 9
每一步都處理內部邏輯:
if (num % i == 0) {
isPrime = false;
} else {
isPrime = true;
}
而且,對于最后一步,i = 9,isPrime = true。
之后,當回圈步驟結束時,回傳isPrime;被執行。
因此,最后一步的結果將被回傳。正如你應該看到的,之前的步驟是沒有意義的。
uj5u.com熱心網友回復:
在每個回圈中isPrime都被分配為true/false,但是你并沒有回傳陳述句,所以這個回圈一直作業到結束。
Public boolean prime(long num){
boolean isPrime = false。
for (int i = 2; i <= num - 1; i ) {
if (num % i == 0) {
isPrime = false;
return isPrime;
} else {
isPrime = true;
return isPrime;
}
return isPrime;
}
像這樣修改,再試一次
。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321063.html
標籤:
上一篇:替換字串中的隨機字符
