如何解决Java函数未返回期望值
我正在编写的程序中的一个错误,该错误是我对Java的分配。 目标:程序应采用两个参数,并找出这些参数之间的所有奇数。然后它应该返回所有这些数字的总和。
错误::如果参数为负或起始编号大于终止编号,则应返回-1。但是我的程序返回0。
也许我的程序没有在循环内更新求和值。但是即使如此,根据返回条件,我的函数应返回-1,而不是总和。
public class SumOddRange{
public static void main(String[] args){
System.out.println(sumOdd(10,5));
}
public static boolean isOdd(int number){
return (number<0)||(number%2==0)?false:true;
}
public static int sumOdd(int start,int end){
int sum = 0;
for(int i=start; i<=end; i++){
if(isOdd(i)){
sum+=i;
}
}
return (start<=0)&&(start>end)? -1: sum;
}
}
解决方法
将输入检查作为方法中的第一件事,并将&&
更改为||
,因为如果第一项检查失败或第二项检查要返回,则想将其返回失败,不仅当都失败时。 isOdd
可以内联:
public static int sumOdd(int start,int end){
if (start <= 0 || start > end)
return -1;
int sum = 0;
for (int i = start; i <= end; i++) {
if (i % 2 != 0) { // or if (i % 2 == 1) {
sum += i;
}
}
return sum;
}
,
您的return (start<=0)&&(start>end)? -1: sum;
行中有逻辑错误
如果开始为结束,则必须返回-1,因此请使用“ ||” (逻辑或)而不是“ &&”(逻辑和):
return (start<=0)||(start>end)? -1: sum;
请仔细阅读@ luk2302的答案,以获得更好的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。