![](/img/trans.png)
[英]How to return boolean “if-then-else” statement in a single return
[英]Using an if/else statement to return a boolean
我有一個方法,將數組作為參數並返回一個布爾值。
在方法內部,我有一個if / else語句。 如果該語句為true,則我希望結果返回true,如果該語句為false,則我希望該語句返回false。
public static boolean allPositive (double[] arr)
{
for (int i = 0; i < arr.length; i++)
{
if(arr[i] > 0)
{
return true;
}
else
{
return false;
}
}
return //What do i put here?
}
}
當然,它最后需要一個返回值。 但是,我對應該從底部返回的內容感到困惑。 我應該如何重寫呢?
首先,您的代碼是錯誤的。 例如,使用{1, -1, 2}
,您的方法將返回true。
如果用不同的方式編寫,則可以避免出現以下問題:
public static boolean allPositive (double[] arr) {
for (int i = 0; i < arr.length; i++) {
if(arr[i] < 0)
{
return false;
}
}
return true;
}
編輯 :甚至更好的是,使用Java 8和Streams的單行解決方案(我喜歡單行解決方案):
public static boolean allPositive (double[] arr) {
//Stream the array and see if any elements matches condition `<0`.
return !Arrays.stream(arr).anyMatch(i->i<0);
}
如果您需要多於一行代碼來使用集合,那么您應該了解Streams 。
public static boolean allPositive (double[] arr)
{
boolean b = true;
for (int i = 0; i < arr.length; i++)
{
if(!(arr[i] > 0))
{
b = false;
}
}
return b;
}
Java的工作方式,通過確保所有返回都發生在if else語句之外來確保代碼沒有問題。 這是因為,程序員的一個常見錯誤是返回if else語句,但從不創建else條件,因此該方法從不返回任何內容。 這樣做是一種更好的實踐做法,因此以后不要試圖弄清楚為什么不返回方法的問題。
您必須在方法末尾(循環之后)返回如果將空數組傳遞給您的方法應返回的值。 由您決定一個空數組是否為“ allPositive”。
Arnaud的答案有多個return語句。 代碼氣味。 如果數組為{1,-1,2},則DreadHeadedDeveloper的答案存在邏輯錯誤,它返回true。
此功能/方法簡潔,並遵循良好的編碼習慣。
public static boolean allPositive (double[] arr) {
boolean ret = true;
for (int i = 0; i < arr.length; i++) {
if(arr[i] <= 0) {
ret = false;
}
}
return ret;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.