【问题标题】:Odd sum application not calculating negative integers correctly?奇数应用程序没有正确计算负整数?
【发布时间】:2018-11-04 18:17:50
【问题描述】:

我应该创建一个从用户那里获取数字的应用程序,以便创建从 1 到用户输入的数字的范围。然后我需要计算 1 和用户输入的数字之间的所有奇数的总和。这适用于正整数但不适用于负整数?

import java.util.Scanner;
public class OddSumApplication {
public static void main (String[]args){

    int sum = 0;

    System.out.print("Enter a positive or negative integer: ");
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();

    if (num == 1){
        System.out.println(num);
        System.out.println("Sum = " + num);
    }
    else{
        while (num != 1){
            if (num >= 1){
                if (num % 2 == 1){
                    sum = sum + num;
                    num = num - 2;
                }
                else{
                    num = num - 1;
                }
            }
            else{
                if (num % 2 == 1){
                    sum = sum + num;
                    num = num + 2;
                }
                else{
                    num = num + 1;
                }
            }
        }
    }
        sum = sum + 1;
        System.out.print("\nSum = " + sum);
}

}

【问题讨论】:

  • 使用num的绝对值,就不需要if (num >= 1){...} else {...}块了。

标签: java


【解决方案1】:

这是因为负奇数 %2 返回负一。试着把它变成绝对值。

...
if (Math.abs(num%2) == 1) {
         sum = sum + num;
         num = num + 2;
     } else {
         num = num + 1;
}

【讨论】:

    【解决方案2】:

    判断一个数是否为奇数的一个好方法是通过除数来检查余数是否不是 0,而不是检查它是否为 1。方法如下所示:

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

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多