我正在创建一种方法,将两个整数之间的所有数字相加。
我目前有:

/**
 * 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);
}

09-07 07:19