java - 合并多个 if 语句

标签 java android if-statement switch-statement logic

我有以下代码,它依赖于多个不同的 if 语句。我正在为 Android 制作 Cribbage 分数计数应用程序。显示的代码仅适用于蓝队,但我最终为蓝队编写的代码也将用于红队和绿队。我现在拥有的东西可以用,但它很笨重。我是 java 新手,希望获得一些有关将代码合并到更易于阅读和维护的最佳实践的指导。

    if(blueTeamScore >= ENDGAMESCORE) {
        String baseVictoryText = "Blue Team has won!";
        TextView winningTeamTextView = (TextView) findViewById(R.id.winningTeam);

        if(hasThreePlayer == false) {
            winningTeamTextView.setText(baseVictoryText);
            if (hasSkunk == true) {
                if (redTeamScore <= 90) {
                    winningTeamTextView.setText(baseVictoryText + "\nAnd Red Team got Skunked");
                }
            }
        }
        if(hasThreePlayer == true) {
            winningTeamTextView.setText(baseVictoryText);
            if (hasSkunk == true) {
                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");
                }
            }
        }
    }

我知道 boolean 变量不能在 switch 语句中使用(太糟糕了),但是还有其他类似的东西可以帮助集中我的代码吗?

最佳答案

我仍然认为自己相当新,但这就是我会写的内容。我编辑了几次。

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);

假设您不介意更改baseVictoryText(不是常量)。否则将其分配给其他东西并使用它

不假设“hasSkunk”意味着至少有一支队伍的得分<90,否则最后一个 else if 会变成 else ...

由于性能原因,“Else if”在理论上更好 - if 只在其中一个为 true 时才会被评估。这在这里不是问题,但如果其中一个条件是某种重型方法的结果......

像这样的一堆 Else If 的工作方式非常类似于带有中断的 switch。

关于java - 合并多个 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58153260/

相关文章:

java - 是否有等于减赋值运算符(=-)

java - 将 DICOM 图像转换为 jpeg 图像

android - 此代码完美适用于 GPS,但我想使用 Wifi。该怎么做?

根据条件进行 JOIN 的 MySQL 语法

C++ 食物菜单(使用 do while 循环)

java - JSF 1.2 - 无法访问 javax.el.E​​LContext

java - Jersey 制作媒体类型冲突

java - Android - 视频文件加密/解密会影响其质量吗?

安卓 : WebView onPageFinished not calling after shouldOverrideUrlLoading method in android 4. 4

linux - If 语句 3 条件 Bash