奇数和应用程序无法正确计算负整数?

时间:2018-11-04 01:19:23

标签: java

我应该创建一个应用程序,该应用程序从用户处获取一个数字,以便创建从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);
}

}

2 个答案:

答案 0 :(得分:2)

这是因为负奇数%2返回负1。尝试赋予它绝对的价值。

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

答案 1 :(得分:0)

查找数字是否为奇数的一种好方法是通过将数字除以零来检查余数,然后再检查其是否为1。该方法如下所示:

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