int low和int high之间的数字总和;爪哇岛



我正在尝试用Java创建代码,我知道这是错误的,但我需要一点帮助:

给定两个表示范围的低和高整数,返回该范围内整数的总和。例如,如果 low 为 12,high为 18,则返回值应为 12、13、14、15、16、17 和 18 的总和,即 105。如果低大于高,则返回 0。

我的解决方案是(我知道这是不对的,请不要谋杀我(:

public int sumRange(int low, int high)
{
int sum = 0;
for (int val = int low; val < int high; val++)
sum += val;
return val;
}

您有几个问题。

  1. 循环语法不正确。无需重新声明现有变量的类型。
  2. 您返回val而不是sum。由于val的作用域为循环,因此这是一个编译错误。
  3. 您的循环结束得太早了。它不包括最大值。要包含它,请使用<=而不是<.

固定代码

public class RangeTest1 {
public static void main(String[] args){
System.out.println(sumRange(12, 18)); // prints 105
System.out.println(sumRange(18, 12)); // prints 0
System.out.println(sumRange(18, 18)); // prints 18
}
public static int sumRange(int low, int high)
{
int sum = 0;
for (int val = low; val <= high; val++){
sum += val;
}
return sum;
}
}

如果low免费大于high,则获得 0,因为在这种情况下,循环永远不会运行任何迭代。初始值 0 保持不变并返回。

或者你可以使用数学,尽管如果high非常大,你必须小心溢出:

public static int sumRange(int low, int high)
{
return high >= low ? (high*(high+1) - low*(low-1))/2 : 0;
}

最新更新