如何不同地编写这部分代码?

时间:2015-10-31 21:43:48

标签: java

import java.util.*;

public class something {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int kvadratek, a, b;
        a = sc.nextInt();
        b = sc.nextInt();


        --a;
        --b;


        if(a>b) {

            kvadratek=b;
            b=a;
            a=kvadratek;

            System.out.println((a*(a+1)*(2*a+1)/6-((a+1)*a/2)*(a+b)+(a+1)*a*b));
        }


        else {

            System.out.println(a*(a+1)*(2*a+1)/6-((a+1)*a/2)*(a+b)+(a+1)*a*b);
        } 
    }
}

我是java编码的新手,我有一个问题,如果我可以写这部分

kvadratek=b;
b=a;
a=kvadratek;

不同以便它会给我与else部分相同的结果。是否可以用if,while句子来做?如果我插入

,我实际上不需要代码的else部分
kvadratek=b; 
b=a; 
a=kvadratek;

但有没有办法改变这一部分?

2 个答案:

答案 0 :(得分:2)

首先,为避免重复代码,将其提取到方法:

private static int compute(int a, int b) {
    return (a*(a+1)*(2*a+1)/6-((a+1)*a/2)*(a+b)+(a+1)*a*b);
}

现在您希望b成为两个数字中最大的一个,a成为另一个数字。您可以使用Math.maxMath.min

,而不是交换它们
a = sc.nextInt() - 1;
b = sc.nextInt() - 1;

System.out.println(compute(Math.min(a, b), Math.max(a, b));

答案 1 :(得分:0)

您可以使用:

int k = Math.max(a, b)
a = Math.min(a, b);
b = k

在这段代码之后,b将在原ab之间变得更大,而a将更小,因此无需if/else