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

标签 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 循环

最佳答案

做到这一点的最简单方法是重用您已有的东西。让我们先重命名您的方法:

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/

相关文章:

java - 使用 JPA EclipseLink 进行无连接远程 MySQL 连接

java - 我真的应该像躲避瘟疫一样避免 instanceof 吗?

java - 如何将缩写映射到完整字符串?

sql - 将 sql 整数舍入到最接近的小时

c - 如何将整数表示为其质因数的乘积?

c - 使用整数常量的宏初始化对象

带小数到数字的 PHP 字符串

Java向servlet传递不可见参数

java - 如何使用 Maven Shade 插件捆绑来自不同模块的类

c++ - signed int 引用的 reinterpret_cast