我正在创建一种方法,将两个整数之间的所有数字相加。
我目前有:
/**
* 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循环
最佳答案
最简单的方法是重复使用现有的资源。让我们先重命名您的方法:
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);
}