gpt4 book ai didi

java - 求和奇数程序

转载 作者:搜寻专家 更新时间:2023-10-31 19:42:52 24 4
gpt4 key购买 nike

我正在编写一个程序,我应该在其中创建一个方法来计算传递的数字是否为奇数。对于此方法,我还需要检查传递的数字是否 > 0,如果不是,则返回 false。我还应该使用两个参数(开始和结束,代表一个数字范围)制作第二种方法,并且该方法应该使用 for 循环对该范围内的所有奇数求和。参数 end 需要大于或等于 start 并且 start 和 end 参数都必须大于 0。如果不满足这些条件,则从该方法返回 -1 以指示无效输入。

这是作业:

用一个 int 参数编写一个名为 isOdd 的方法,并将其命名为 number。该方法需要返回一个 boolean 值。检查数字是否 > 0,如果不是,则返回 false。如果数字是奇数返回真,否则返回假。

编写第二个名为 sumOdd 的方法,它有两个 int 参数 start 和 end,代表一个数字范围。该方法应使用 for 循环对该范围内的所有奇数求和,包括末尾并返回总和。它应该调用 isOdd 方法来检查每个数字是否为奇数。参数 end 需要大于或等于 start 并且 start 和 end 参数都必须大于 0。如果不满足这些条件,则从该方法返回 -1 以指示无效输入。

我已经尝试了一个多小时,但我没有正确执行,因为我的输出是错误的。我已经在我的代码下面写下了预期的结果和我的结果。

这是我的代码:

public static boolean isOdd(int number){
boolean status = false;
if(number < 0){
status = false;
} else if(number % 2 != 0){
status = true;
}
return status;
}
public static int sumOdd(int start, int end){
int sum = 0;
if((end < start) || (start < 0) || (end < 0)){
return -1;
}
for(int i = 0; i <= end; i++){
if((isOdd(i))){
sum += i;
}
}
return sum;
}

预期的结果是:

System.out.println(sumOdd(1, 100));// → should return 2500

System.out.println(sumOdd(-1, 100)); // → should return -1

System.out.println(sumOdd(100, 100));// → should return 0

System.out.println(sumOdd(13, 13));// → should return 13 (This set contains one number, 13, and it is odd)

System.out.println(sumOdd(100, -100));// → should return -1

System.out.println(sumOdd(100, 1000));// → should return 247500

我的结果:

2500

-1

2500

49

-1

250000

最佳答案

首先,如果满足两个条件,您的 isOdd 方法只需要返回 true:number 必须大于零且必须奇怪。这可以通过单个 return 和一个 boolean 值 and 来完成。喜欢,

public static boolean isOdd(int number) {
return number > 0 && number % 2 != 0;
}

其次,您的循环应该从 start(不是零)开始。但是,我随后会测试 start 是否为 even。如果是,则在循环之前递增它。然后我们知道我们有一个初始值奇数,所以我们不再需要在循环中测试奇数(我们可以递增 2)。喜欢,

public static int sumOdd(int start, int end) {
if (end < start || start < 0 || end < 0) {
return -1;
}
int sum = 0;
if (!isOdd(start)) {
start++;
}
for (int i = start; i <= end; i += 2) {
sum += i;
}
return sum;
}

这应该会更有效率。

关于java - 求和奇数程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55362559/

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