java - 使 if-else 解决方案更高效、代码行更少 (Java)

标签 java if-statement switch-statement conditional-statements

有没有更有效的方法来编写这样的代码而不使用那么多 if-else 语句?

private int group1, group2, group3, group4;
private int total = 0

public void assignMembers()
{
    group1 = (int)((6 * Math.random()) + 1);
    group2 = (int)((6 * Math.random()) + 1);
    group3 = (int)((6 * Math.random()) + 1);
    group4 = (int)((6 * Math.random()) + 1);
}

public void calculateSomething()
{
    if(group1 == 3)
    {
        total += 2;
    }
    else if(group1 == 5)
    {
        total += 4;
    }

    if(group2 == 3)
    {
        total += 2;
    }
    else if(group2 == 5)
    {
        total += 4;
    }

    if(group3 == 3)
    {
        total += 2;
    }
    else if(group3 == 5)
    {
        total += 4;
    }

    if(group4 == 3)
    {
        total += 2;
    }
    else if(group4 == 5)
    {
        total += 4;
    }
{

如果组有 3 个成员,则 if-else 语句将总数加 2,如果组有 5 个成员,则为 4。

我知道我可以用“组”数组做一些更有效的事情,但是有没有没有数组的方法?也许 calculateSomething 方法可以获取每个组的团队成员数量,而不必重复 if-else 这么多?如有任何建议,我们将不胜感激。

最佳答案

如果您似乎在代码中发现了冗余模式,那么您就应该创建一个可重用的函数。

private int group1, group2, group3, group4;
private int total = 0;

    public void assignMembers()
    {
        group1 = (int)(Math.random()*6 + 1);
        group2 = (int)(Math.random()*6 + 1);
        group3 = (int)(Math.random()*6 + 1);
        group4 = (int)(Math.random()*6 + 1);

        calc(group1);
        calc(group2);
        calc(group3);
        calc(group4);
    }

    public void calc(int group)
    {
        switch (group){
                case 3:
                  total += 2;
                  break;
                case 5:
                  total += 4;
                  break;
        }
    }

更新答案 - 因为要求是:必须在类外调用该方法。

private int group1, group2, group3, group4;
    private int total = 0;

        public void assignMembers()
        {
            group1 = (int)(Math.random()*6 + 1);
            group2 = (int)(Math.random()*6 + 1);
            group3 = (int)(Math.random()*6 + 1);
            group4 = (int)(Math.random()*6 + 1);
        }

        private void calc(int group)
        {
            switch (group){
                    case 3:
                      total += 2;
                      break;
                    case 5:
                      total += 4;
                      break;
            }
        }

        public void calculateSomething(){
            calc(group1);
            calc(group2);
            calc(group3);
            calc(group4);
        }

关于java - 使 if-else 解决方案更高效、代码行更少 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928095/

相关文章:

powershell - 如果条件不起作用,PowerShell简单语法

javascript - 如果在特定页面上运行脚本 - rails

javascript - 在 JavaScript switch 语句中使用 OR 运算符

java - 使用 DocumentBuilder 解析 XHTML 时出现无限循环 "parse"

java - 无法在 ArrayList<String> 中找到匹配的字符串

java - Switch-case 制作 NOT 语句

python - 正则表达式相关,python中的switch语句模拟

java - 将 ListView 项目 onclick 解析到另一个 Activity 并匹配 JSON 中的特定数据

java - 为什么我不能创建泛型数组?

java - Android 不接收广播 UDP,但接收定向 UDP