3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個贊
我仍然認(rèn)為自己相當(dāng)新,但這就是我會寫的內(nèi)容。我編輯了幾次。
if (hasSkunk) {
if (!hasThreePlayer) {
if (redTeamScore<=90) {
baseVictoryText += "\nAnd Red Team got Skunked";
}
} else {
if ((redTeamScore <= 90) && (greenTeamScore <= 90)) {
baseVictoryText += "\nAnd Red and Green Teams got Skunked";
} else if (redTeamScore <= 90) {
baseVictoryText += "\nAnd Red Team got Skunked";
} else if (greenTeamScore <= 90) {
baseVictoryText += "\nAnd Green Team got Skunked";
}
}
}
winningTeamTextView.setText(baseVictoryText);
假設(shè)您不介意更改 baseVictoryText (不是常量)。否則將其分配給其他東西并使用它
不假設(shè)“hasSkunk”意味著至少有一支球隊的得分<90,否則最后一個 else if 會變成 else ...
由于性能原因,“Else if”在理論上會更好 - 只有在其中一個為真時才會評估 if。這在這里不是問題,但如果其中一個條件是某種重型方法的結(jié)果......
像這樣的一堆 Else If 的工作方式非常類似于帶有中斷的 switch。

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個贊
您可以嘗試三元運(yùn)算符 ?: 。上面代碼中的示例我只是簡化了某些部分。你可以嘗試其他類似的東西
if(!hasThreePlayer) {
winningTeamTextView.setText(hasSkunk&&redTeamScore<=90 ? baseVictoryText + "\nAnd Red Team got Skunked" : baseVictoryText);
}
else {
winningTeamTextView.setText(baseVictoryText);
if (hasSkunk) {
if ((redTeamScore <= 90) && (greenTeamScore <= 90)) {
winningTeamTextView.setText(baseVictoryText + "\nAnd Red and Green Teams got Skunked");
}
if ((redTeamScore <= 90) && (greenTeamScore >= 90)) {
winningTeamTextView.setText(baseVictoryText + "\nAnd Red Team got Skunked");
}
if ((redTeamScore >= 90) && (greenTeamScore <= 90)) {
winningTeamTextView.setText(baseVictoryText + "\nAnd Green Team got Skunked");
}
}
}

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個贊
更干凈一點(diǎn),因?yàn)橹辉谝粋€地方設(shè)置 textField,不需要 == 一個布爾值,if 應(yīng)該分支,因?yàn)槿绻粋€成功,另一個就會失敗。與初始響應(yīng)略有不同。
if(blueTeamScore >= ENDGAMESCORE) {
String victoryText = "Blue Team has won!";
if(!hasThreePlayer && hasSkunk && redTeamScore <= 90) {
victoryText += "\nAnd Red Team got Skunked");
}else if(hasThreePlayer && hasSkunk) {
if (redTeamScore <= 90 && greenTeamScore <= 90) {
victoryText += "\nAnd Red and Green Teams got Skunked";
}else if (redTeamScore <= 90) {
victoryText += "\nAnd Red Team got Skunked";
}else if (greenTeamScore <= 90) {
victoryText += "\nAnd Green Team got Skunked";
}
}
TextView winningTeamTextView = (TextView) findViewById(R.id.winningTeam);
//maybe check for null textfield here?
winningTeamTextView.setText(victoryText);
}
但我會分解成一個函數(shù)
if(blueTeamScore >= ENDGAMESCORE) {
String victoryText = "Blue Team has won!";
if(hasSkunk){
victoryText += getSkunkText(hasThreePlayer, redTeamScore, greenTeamScore)
}
TextView winningTeamTextView = (TextView) findViewById(R.id.winningTeam);
//maybe check for null textfield here?
winningTeamTextView.setText(victoryText);
}
功能:
private String getSkunkText(boolean hasThreePlayer, int redTeamScore, int greenTeamScore){
String skunkText = ""
if(!hasThreePlayer) {
skunkText = redTeamScore <= 90 ? "\nAnd Red Team got Skunked") : skunkText;
}else if (redTeamScore <= 90 && greenTeamScore <= 90) {
skunkText = "\nAnd Red and Green Teams got Skunked";
}else if ( redTeamScore <= 90) {
skunkText = "\nAnd Red Team got Skunked";
}else if (greenTeamScore <= 90) {
skunkText = "\nAnd Green Team got Skunked";
}
return skunkText;
}
添加回答
舉報