[英]Sum of numbers between int low and int high; Java
我正在尝试用Java创建代码,但我知道这是错误的,但是我需要一些帮助:
给定两个低和高整数,它们代表一个范围,则返回该范围内整数的总和。 例如,如果low为12而high为18,则返回的值应为12、13、14、15、16、17和18的总和,即105。如果low大于high,则返回0。
我的解决方案是(我知道这是不对的,请不要谋杀我):
public int sumRange(int low, int high)
{
int sum = 0;
for (int val = int low; val < int high; val++)
sum += val;
return val;
}
你有几个问题。
val
而不是sum
。 由于val
的作用域是循环,因此这是编译错误。 <=
而不是<
。 固定码
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.