我正在创建一种方法来在两个整数之间添加所有数字。 我目前有:
/**
* Add up all numbers between two integers
*/
public void Sum(int a,int b)
{
int result = 0;
while (a <=b)
{
result+=a;
a++;
}
System.out.println("The sum of all numbers is "+result);
}
这仅适用于a <= b
。如果a > b
?
我必须使用while循环
答案 0 :(得分:3)
最简单的方法是重用已有的东西。让我们先重命名你的方法:
public void sumMonotonic(int a, int b)
{
int result = 0;
while (a <=b) {
result+=a;
a++;
}
System.out.println("The sum of all numbers is "+result);
}
所以sumMonotonic()
只有在第一个参数不大于第二个参数时才有效。但现在我们可以像这样定义sum()
:
public void sum(int a, int b)
{
if (a<=b)
sumMonotonic(a,b);
else
sumMonotonic(b,a);
}
这只是以适当的顺序调用带有参数的其他函数。
实际上还有一个我们可能会解决的奇怪之处。使用sumMonotonic()
方法进行打印似乎有点不合时宜。如果返回总和,并且sum()
方法执行打印,那会更好。所以我们像这样重构它:
public int sumMonotonic(int a, int b)
{
int result = 0;
while (a <=b) {
result+=a;
a++;
}
return result;
}
public void sum(int a, int b)
{
int result;
if (a<=b)
result = sumMonotonic(a,b);
else
result = sumMonotonic(b,a);
System.out.println("The sum of all numbers is "+result);
}
答案 1 :(得分:2)
public void Sum(int a,int b)
{
int result = 0;
if(a>b) //swap them
{
result=a;
a=b;
b=result;
result=0;
}
while (a <=b) {
result+=a;
a++;
}
System.out.println("The sum of all numbers is "+result);
}