gpt4 book ai didi

java - 当我希望根据条件返回时,for 循环不返回 -1

转载 作者:行者123 更新时间:2023-12-04 08:30:51 25 4
gpt4 key购买 nike

问题是,当一个小于或等于 0 的整数作为“end”的参数传递时,当“end”小于“start”时,它不会返回 -1。

    public static boolean isOdd (int number)
{
if (number < 0)
{
return false;
}
else
{
if (number % 2 != 0 )
{
return true;
}
else
{
return false;
}
}
}
这是测试参数“开始”和“结束”的方法
    public static int sumOdd (int start, int end)
{

int sum = 0;
for (int i = start; i<=end; i++)
{
if ((start<=0) || (end<=0) || (end<start))
{
return -1;
}
else
{
if (isOdd(i))
{
sum+=i;
}
}
}
return sum;
}

最佳答案

问题出在你的 for环形。
您指示循环在 i 时运行小于或等于 end .这在纸面上听起来不错,但你确实意识到这句话

if ((start<=0) || (end<=0) || (end<start))
永远不会运行(在 end 大于 start 的情况下),因为 istart ,如果 end大于 start ,因此它大于 i ,这将不满足您之前在 for 循环中定义的条件, i is smaller or equal to end .因此, for循环永远不会运行。
你应该这样做:
public static int sumOdd(int start, int end) {
int sum = 0;
if ((start <= 0) || (end <= 0) || (end < start)) {
return -1;
} else {
for (int i = start; i <= end; i++) {
if (isOdd(i)) {
sum += i;
}
}
return sum;
}
}
试运行 sumOdd(1, 0)返回 -1 sumOdd(1, 3)返回 4

关于java - 当我希望根据条件返回时,for 循环不返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65027558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com