我在寫一個方法來檢查數組中包含的奇數個數。這個想法是我使用for循環來測試一個數字是否是奇數,如果是,它會將變量b加1,然後返回b作爲機率。我寫的是這樣的:使用for循環來測試數字是否是奇數
for (int a = 0, b = 0; values[a]%2==1;a++){
b++;
}
return b;
,但它給我一個錯誤「返回b; ^ B不能得到解決」。
我在做什麼錯?
我在寫一個方法來檢查數組中包含的奇數個數。這個想法是我使用for循環來測試一個數字是否是奇數,如果是,它會將變量b加1,然後返回b作爲機率。我寫的是這樣的:使用for循環來測試數字是否是奇數
for (int a = 0, b = 0; values[a]%2==1;a++){
b++;
}
return b;
,但它給我一個錯誤「返回b; ^ B不能得到解決」。
我在做什麼錯?
您不需要b
值來確定是否需要檢查數組的末尾。你有什麼相似的東西
for (int a = 0; a < values.length;a++)
if(values[a]%2!=1)
return a;
// currently throws an exception.
你可能打算計算奇數值的數量,看起來像這樣。
int count = 0;
for (int a = 0; a < values.length;a++)
if(values[a] % 2 !=0)
count++;
return count;
或
int count = 0;
for (int v: values)
count += v & 1;
return count;
變量b在for語句中定義,並且只在該代碼塊中可見。
試試這個
int b = 0;
for (int a = 0; values[a]%2==1;a++){
b++;
}
return b;
擊敗了我第二次:) – kostja
你b在你的循環範圍定義 - 它不是你的回報可見outisde。您可以像這樣重寫:
int b = 0
for (int a = 0; values[a]%2==1;a++){
b++;
}
return b;
當您嘗試訪問您定義的範圍之外的變量時,此錯誤即將到來。
// b is defined in this scope and available here only
for (int a = 0, b = 0; values[a]%2==1;a++){
b++;
}
// Nothing as b is available outside scope
return b;
要解決此問題,只是在更大範圍內聲明b
。
int b=0;
for (int a = 0; values[a]%2==1;a++){
b++;
}
return b;
http://www.roseindia.net/java/beginners/IfElse.shtml
退房本教程。它應該告訴你你需要知道的一切,並且比你的方法簡單一些。
其他答案指出是什麼導致你的編譯錯誤。還應該指出,算法是錯誤的。問題是循環終止第一次values[a]%2==1
是false
。換句話說,它計算第一個偶數之前的奇數,而不是奇數的總數。
是的,這是我發現,即使我可以得到它編譯。我該如何解決這個問題?如果/ else語句? – shewontreply
是的。這是簡單的方法。我不會給你這些代碼,因爲你可以通過爲自己工作而學到更多東西。 –
絕對。謝謝您的幫助! – shewontreply
讀'甲骨文爪哇Tutorial' – adatapost
的b的外循環沒有範圍,定義INT B = 0,環(它是一個基本的東西)之前。 – roni
順便說一句:'values [a]%2 == 1'測試一個數字是奇數和正數。如果你想讓所有奇數都使用'values [a]%2!= 0' '-1%2'是'-1' –