2011-04-11 18 views
4
if() { 

}else { 
    if (IsAlternateRow=='true') 
     IsAlternateRow = 'false'; 
    else 
     IsAlternateRow = 'true'; 
} 

我可以在另一個else語句中放置if和else語句嗎?將if/else放入另一個其他內部是不好的做法嗎?

+4

嘗試發佈此問題的代碼審查網站(http://codereview.stackexchange.com/)。它更適合那裏。 – 2011-04-11 15:17:31

+0

是的,從技術上講,你可以做到這一點,但你會盡可能避免它,以保持你的代碼'乾淨'和可讀 – 2011-04-11 15:17:58

+0

Sidenote:if(IsAlternateRow =='true')'肯定會是false, ='評估對象引用的相等性。如果你想要字符串比較,使用'.equals()'。 – birryree 2011-04-11 15:18:13

回答

5

嘗試

IsAlternateRow = !IsAlternateRow; 

(更新以顯示這是什麼樣子在你的代碼)

var IsAlternateRow = false; 

if(/* -- insert equation here -- */) 
{ 
// do something 
} 
else 
{ 
    IsAlternateRow = !IsAlternateRow; 
} 
+1

你能解釋一下我這... – theJava 2011-04-11 15:17:43

+1

這是一個簡單的方法來顛倒布爾值。 'IsAlternateRow'(解釋爲false)'=!IsAlternateRow'(解釋爲!false或true) 這從假到真,從真到假。 – 2011-04-11 15:20:26

+0

@theJava:'IsAlternateRow'將'==='與布爾運算符相比,IsAlternateRow'目前等於什麼。 – Shaz 2011-04-11 15:20:44

8

注:這個問題得到了重新標記,如JavaScript這個答案被張貼後(其最初是關於Java的,所以這個答案是關於Java的)。

通常,在else子句中放置ifelse是很好的做法。

但是,您的代碼存在幾個問題。 IsAlternateRow=='true'在語法上不是有效的。

  • 如果它是一個字符串比較,你應該使用雙引號和.equals();
  • 如果這是一個布爾比較,那麼最好只是做IsAlternateRow = !IsAlternateRow而不是整個嵌套if
+0

實際上,它在語法上很好。從邏輯上來說這是一團糟...... – 2011-04-11 15:18:39

+3

@Chris Nope。 'true'和'false'不是有效的字符常量。 – 2011-04-11 15:20:47

+0

啊,你說得對。我錯過了單引號 – 2011-04-11 15:25:04

1

是的,你可以。如果你想多次評估相同的對象/變量,那麼你可以使用switch語句,但在很多情況下,如果語句能夠完成這項工作,則會出現交錯。

1

要回答你的問題,是的,你可以無限嵌套if/else語句。您提供的代碼將無法編譯。雖然考慮到你在談論Java,但我想象一下,除非這是僞代碼,否則它不會提供期望的結果。

4

return(IsAlternateRow.equals('true'))? 「假」:「真」

3

一般情況下,我會說,回答這個樣子,你應該問自己的問題,

這是容易閱讀?

淺嵌套if/else語句並不可怕,但一旦你開始嵌套廣告噁心,你應該重構。

2

這是好的,但也有更簡單的方法,你在做什麼:

IsAlternateRow = !IsAlternateRow 
4

是,放置ifelse內是完全可以接受的做法,但在大多數情況下使用的else if更清晰和更清潔。例如。

if (test) { 
    // Do something 
} else if (otherTest) { 
    // Do something else 
} else { 
    // Do a third thing 
} 

INFACT這是短手

if (test) { 
    // Do something 
} else { 
    if (otherTest) { 
     // Do something else 
    } else { 
     // Do a third thing 
    } 
} 

和兩個應編譯在大多數情況下,幾乎相同的程序。

你的代碼示例不是很清楚,不能正確編譯,更清晰的示例代碼可以幫助我們幫助你。

1

正確的方式來做到這一點:

if() { 

} else if (IsAlternateRow=='true') { 
    IsAlternateRow = 'false'; 
} 
else 
{ 
    IsAlternateRow = 'true'; 
} 
+0

使用字符串進行布爾比較這樣做並不是最好的方法。 – 2011-04-12 10:21:38

相關問題