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;
但有没有办法改变这一部分?
答案 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.max
和Math.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
将在原a
和b
之间变得更大,而a
将更小,因此无需if/else
。