总结使用类的范围之间的数字

时间:2015-01-29 18:43:52

标签: java

我用方法getSum(int lower, int upper)编写了一个程序,它返回了下限和上限之间的数字之和(包括)。

public class Main {

    int lower; 
    int upper;

    public void getSum(int lower, int upper){

        this.lower = lower;
        this.upper = upper;

        int sum = 0;
        for(int i=upper;i<=lower; i++){
            System.out.println("the total sum is "+ sum);
            sum = sum+1;
        }   
    }
    public static void main(String[] args){     
        Main main = new Main();
        main.getSum(20, 50);
    }
}

我期待答案1085,并且在我添加它们时看到所有打印的数字,但我什么都没打印。我做错了什么?

3 个答案:

答案 0 :(得分:3)

您需要重写for循环:

  1. i的初始值和限制测试都是错误的
  2. 您需要将i添加到sum而不是1
  3. 样品:

    int sum = 0;
    for(int i=lower;i<=upper; i++){
        sum = sum+i;
        System.out.println("the total sum is "+ sum);
    }
    

    请注意,这可以解决(假设对于大输入数字或范围没有发生算术溢出)而不使用等式迭代:

    sum = (upper - lower + 1) * (lower + upper) / 2;
    

    作为额外提示,

    • 您可以sum += i代替sum = sum + i
    • 您需要将lowerupper参数值分配给具有this.lower = lower的类字段;您可以删除它们而不会影响您的方法
    • 您应该移动println语句以在增加后打印总和
    • 您应该考虑返回sum作为方法的输出:

    样品:

    public int getSum(int lower, int upper){
        int sum = 0;
        for(int i=lower;i<=upper; i++){
            sum += i;
            System.out.println("the total sum is "+ sum);
        }
        return sum;
    }
    

答案 1 :(得分:1)

你只在其他人指出的总和中添加1

您可以将方法更改为

public void getSum(int lower, int upper){

    this.lower = lower;
    this.upper = upper;

     int sum = 0;

    for(int i=lower;i<=upper; i++){
       System.out.println("the total sum is "+ sum);
       sum +=i;

}
System.out.println("the final total sum is "+ sum);
}

DEMO

答案 2 :(得分:0)

你可以用这种简单的方式做到:

public static int getSum(int lower, int upper) {
    if (lower > upper)
        return 0;
    else
        return lower + getSum(lower + 1, upper);
}

或者更短:

public static int getSum(int lower, int upper) {
    return lower > upper ? 0 : lower + getSum(lower + 1, upper);
}

然后,在您的main()方法中:

public static void main(String[] args) {
    System.out.println("The sum is " + getSum(10, 11));
}