我總是假定如果一個語句被聲明爲false,如boolean valid = false
,那麼編寫!valid
將反過來反轉valid
爲真。但是,這是完全錯誤的錯誤觀念嗎?例如,在下面的代碼中;在false上使用not語句boolean
for (int check=3; check <= primeLimit; check += 2) {
boolean divisorFound=false;
for (int div=3; div<=Math.sqrt(check) && !divisorFound; div += 2) {
if (check%div==0)
divisorFound=true;
}
循環搜索divisorFound
的第二個錯誤是否爲真? 因爲如果有人暗示除數是假的,是不是隻是說:
div<=Math.sqrt(check) && divisorFound;
這裏的for循環搜索!divisorFound爲了停止,所以它搜索divisorFound爲true來停止。 建議; for循環專門用於重複n次。要使用布爾變量,while循環更有用。 – 2014-12-19 00:35:43
@pbabcdefp,謝謝你,這正是我想澄清的。我很尷尬地問這個問題,因爲它似乎很瑣碎,但雙重否定總是讓我困惑。我認爲這段代碼意味着爲了循環運行,divisorFound必須是假的,但它只是說它會運行,直到有一個條件使得divisorFound爲真。 – kris 2014-12-19 00:53:28
沒關係。簡單的問題沒有錯。我總是犯一些基本的錯誤 - 我不得不刪除我的評論,因爲它包含了一個非常令人尷尬的錯誤。我建議你使用'System.out.println(...)'來跟蹤變量,看看發生了什麼。這是一種非常有效的學習方式。 – 2014-12-19 00:59:54