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

时间:2018-10-10 01:01:17

标签: java for-loop

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

给出代表范围的上下两个整数,返回该范围内的整数之和。例如,如果low为12而high为18,则返回的值应为12、13、14、15、16、17和18的总和,即105。如果low大于high,则返回0。 / p>

我的解决办法是(我知道这是不对的,请不要杀我):

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

2 个答案:

答案 0 :(得分:3)

您有几个问题。

  1. 错误的循环语法。您不需要重新声明现有变量的类型。
  2. 您返回<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script> <div id="app" class="container"> <section v-for="item in myArray" > <div class="flex"> <div>{{item.name}}</div> <div>{{item.value}}</div> <div>{{item.another}}</div> <div>{{item.high}}</div> <div>{{item.low}}</div> <div>{{item.visible}}</div> <div><button class="btn btn-primary" @click="selectedItem=item"> Show details</button></div> </div> </section> <div class="mymodal" v-if="selectedItem.visible"> <input type="checkbox" v-model="selectedItem.visible" @change="setVisible"> <label for="cad">{{selectedItem.name}}</label> </div> </div>而不是val。由于sum的作用域是循环,因此这是编译错误。
  3. 您的循环结束得太早了。它不包括最大值。要包含它,请使用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则免费获得0,因为在这种情况下循环永远不会运行任何迭代。初始值0保留并返回。

答案 1 :(得分:3)

或者您可以使用math,但是如果high非常大,则必须小心溢出:

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