我用方法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,并且在我添加它们时看到所有打印的数字,但我什么都没打印。我做错了什么?
答案 0 :(得分:3)
您需要重写for
循环:
i
的初始值和限制测试都是错误的i
添加到sum
而不是1
样品:
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
lower
和upper
参数值分配给具有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);
}
答案 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));
}