if() {
}else {
if (IsAlternateRow=='true')
IsAlternateRow = 'false';
else
IsAlternateRow = 'true';
}
我可以在另一個else語句中放置if和else語句嗎?將if/else放入另一個其他內部是不好的做法嗎?
if() {
}else {
if (IsAlternateRow=='true')
IsAlternateRow = 'false';
else
IsAlternateRow = 'true';
}
我可以在另一個else語句中放置if和else語句嗎?將if/else放入另一個其他內部是不好的做法嗎?
嘗試
IsAlternateRow = !IsAlternateRow;
(更新以顯示這是什麼樣子在你的代碼)
var IsAlternateRow = false;
if(/* -- insert equation here -- */)
{
// do something
}
else
{
IsAlternateRow = !IsAlternateRow;
}
注:這個問題得到了重新標記,如JavaScript這個答案被張貼後(其最初是關於Java的,所以這個答案是關於Java的)。
通常,在else
子句中放置if
和else
是很好的做法。
但是,您的代碼存在幾個問題。 IsAlternateRow=='true'
在語法上不是有效的。
.equals()
;IsAlternateRow = !IsAlternateRow
而不是整個嵌套if
。實際上,它在語法上很好。從邏輯上來說這是一團糟...... – 2011-04-11 15:18:39
@Chris Nope。 'true'和'false'不是有效的字符常量。 – 2011-04-11 15:20:47
啊,你說得對。我錯過了單引號 – 2011-04-11 15:25:04
是的,你可以。如果你想多次評估相同的對象/變量,那麼你可以使用switch語句,但在很多情況下,如果語句能夠完成這項工作,則會出現交錯。
要回答你的問題,是的,你可以無限嵌套if/else語句。您提供的代碼將無法編譯。雖然考慮到你在談論Java,但我想象一下,除非這是僞代碼,否則它不會提供期望的結果。
return(IsAlternateRow.equals('true'))? 「假」:「真」
一般情況下,我會說,回答這個樣子,你應該問自己的問題,
這是容易閱讀?
淺嵌套if/else
語句並不可怕,但一旦你開始嵌套廣告噁心,你應該重構。
這是好的,但也有更簡單的方法,你在做什麼:
IsAlternateRow = !IsAlternateRow
是,放置if
的else
內是完全可以接受的做法,但在大多數情況下使用的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
}
}
和兩個應編譯在大多數情況下,幾乎相同的程序。
你的代碼示例不是很清楚,不能正確編譯,更清晰的示例代碼可以幫助我們幫助你。
正確的方式來做到這一點:
if() {
} else if (IsAlternateRow=='true') {
IsAlternateRow = 'false';
}
else
{
IsAlternateRow = 'true';
}
使用字符串進行布爾比較這樣做並不是最好的方法。 – 2011-04-12 10:21:38
嘗試發佈此問題的代碼審查網站(http://codereview.stackexchange.com/)。它更適合那裏。 – 2011-04-11 15:17:31
是的,從技術上講,你可以做到這一點,但你會盡可能避免它,以保持你的代碼'乾淨'和可讀 – 2011-04-11 15:17:58
Sidenote:if(IsAlternateRow =='true')'肯定會是false, ='評估對象引用的相等性。如果你想要字符串比較,使用'.equals()'。 – birryree 2011-04-11 15:18:13