我正在尝试用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;
}
答案 0 :(得分:3)
您有几个问题。
<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
的作用域是循环,因此这是编译错误。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;
}