简化if语句,Java

时间:2011-01-02 17:10:18

标签: java if-statement

我想简化以下代码:

public static void main(String[] args) {

        int c1 = Integer.parseInt(args[0]);
        int c2 = Integer.parseInt(args[1]);
        int c3 = Integer.parseInt(args[2]);

        /* 1 */if (c2 - c1 == 0) {
            /* 2 */if (c1 != c3) {
                c3 += c1;
                /* 4 */System.out.println(c3);
                /* 5 */c3 *= c2;
                /* 6 */}
        }

        /* 7 */if (c1 == c3)
            /* 8 */if (c1 - c2 == 0)
            /* 9 */{
                c3 += c1;
                /* 10 */System.out.println(c3);
                /* 11 */c3 *= c1;
                /* 12 */if (c1 < c2)
                    c2 += 7;
                /* 13 */else
                    c2 += 5;
                /* 14 */}

        /* 15 */System.out.println(c1 + c2 + c3);
    }

首先c2 - c1 == 0c2 == c1相同,c1 - c2 == 0c1 == c2相同。此外,我可以删除if (c1 < c2)并保留else语句的内容。

结果:

public static void main(String[] args) {

        int c1 = Integer.parseInt(args[0]);
        int c2 = Integer.parseInt(args[1]);
        int c3 = Integer.parseInt(args[2]);

        /* 1 */if (c1 == c2) {
            /* 2 */if (c1 != c3) {
                c3 += c1;
                /* 4 */System.out.println(c3);
                /* 5 */c3 *= c2;
                /* 6 */}
        }

        /* 7 */if (c1 == c3)
            /* 8 */if (c1 == c2)
            /* 9 */{
                c3 += c1;
                /* 10 */System.out.println(c3);
                /* 11 */c3 *= c1;

                    c2 += 5;
                /* 14 */}

        System.out.println(c1 + c2 + c3);
    }

我的问题是现在可以简化什么?如果内部if将在外面,我可以简化if。你觉得怎么样?

5 个答案:

答案 0 :(得分:4)

警告:我假设您的第二版代码是正确的,即您的初始简化是正确的。

if语句的混乱可以简化为:

if (c1 == c2) {
  c3 += c1;
  System.out.println(c3);
  if (c1 != c3) {
    c3 *= c2;
  } else {
    c2 += 5;
    c3 *= c1;
  }
}

使用/* line numbers /*作为参考点,这就是我简化的内容:

  • 分解1和8中的常见情况
  • 将公共代码分解为4和10左右。

答案 1 :(得分:2)

尝试在ifs中使用一些条件运算符,如果可以执行&&,则没有理由将它们嵌套。

if (c1 == c2 && c1 != c3) {
    ...
}

if (c1 == c2 && c2 == c3) {
    ...
}

答案 2 :(得分:0)

public static void main(String[] args)
{
    int c1 = Integer.parseInt(args[0]);
    int c2 = Integer.parseInt(args[1]);
    int c3 = Integer.parseInt(args[2]);

    if(c1 == c2)
    {
        c3 += c1;
        System.out.println(c3);

        if(c1 == c3)
        {
            c3 *= c1;
            c2 += 5;
        }
        else
        {
            c3 *= c2;
        }       
    }
    System.out.println(c1 + c2 + c3);
}

答案 3 :(得分:0)

public static void main(String[] args) {

int c1 = Integer.parseInt(args[0]);
int c2 = Integer.parseInt(args[1]);
int c3 = Integer.parseInt(args[2]);

if (c2 == c1) 
    {  
        if(c1!= c3)
        {
            c3 += c1;
            System.out.println(c3);
            c3 *= c2;
        } 
        else {
            c3 += c1;
            System.out.println(c3);
            c3 *= c1;
            c2 += 5;
        }
    }
System.out.println(c1 + c2 + c3);

}

答案 4 :(得分:0)

您不能将if语句分解出来。它们按顺序执行,第一个更改第二个值。结果发生了变化。