Java(BlueJ)将两个整数之间的所有数字相加

时间:2014-12-10 12:11:54

标签: java integer

我正在创建一种方法来在两个整数之间添加所有数字。 我目前有:

/**
 * 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循环

2 个答案:

答案 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); 
   }