[英]Sum odd numbers program
我正在編寫一個程序,我應該創建一個方法來計算傳遞的數字是否為奇數。 對於這種方法,我還需要檢查傳遞的數字是否> 0,如果不是,則返回false。 我也應該使用兩個參數(開始和結束,表示一系列數字)制作第二個方法,並且該方法應該使用for循環來對該范圍內的所有奇數求和。 參數end必須大於或等於start,並且start和end參數都必須大於0.如果不滿足這些條件,則從方法返回-1以指示無效輸入。
這是作業:
使用int參數編寫名為isOdd的方法並將其命名為number。 該方法需要返回一個布爾值。 檢查該數字是否> 0,如果它不是返回false。 如果number為odd,則返回true,否則返回false。
編寫第二個名為sumOdd的方法,該方法有2個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
和布爾and
。 喜歡,
public static boolean isOdd(int number) {
return number > 0 && number % 2 != 0;
}
其次,你的循環應該從start
(而不是零)。 但是,我會測試start
是否均勻 。 如果是,則在循環之前遞增它。 然后我們知道我們有一個奇數的初始值,所以我們不再需要測試循環中的奇數(我們可以增加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;
}
哪個應該更有效率。
不要在方法的前面聲明變量,只在需要時創建變量。 正如約旦所指出的,問題在於for
循環索引,它應該從start
,而不是0:
public static boolean isOdd(int number) {
if (number < 0) {
return false;
}
return number % 2 != 0;
}
public static int sumOdd(int start, int end) {
if ((end < start) || (start < 0) || (end < 0)) {
return -1;
}
int sum = 0;
for (int i = start; i < end; i++) {
if (isOdd(i)) {
sum += i;
}
}
return sum;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.