我正在创建一种将两个整数之间的所有数字相加的方法。 我目前有:
/**
* 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);
}
关于Java(BlueJ) 将两个整数之间的所有数字相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400700/