基本的java程序不打印出我需要的值[关闭]

xytpbqjk  于 12个月前  发布在  Java
关注(0)|答案(2)|浏览(134)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
2小时前关闭
Improve this question
这是我的代码

public class EvenOdd {
    public static void main(String[] args) {

        int number = Integer.parseInt(args[0]);
        int total =0;
        if (number < 0){
            System.out.println("ERROR");
            return;
        }
        while (number > 0){
            int digit = number % 10;
            total = digit + total;
            number = number/10;
            }
            if(total/2 == 0){
            System.out.println("Even");
                }else{
            System.out.println("ODD");
        }
    }
}

这个程序应该是一个四位数的数字,并把所有的数字加在一起。如果数字之和是偶数,它必须打印出偶数,如果是奇数,则打印出奇数。对于像2222这样的4位数输入,它应该打印出偶数,但它一直打印奇数。我该如何解决此问题?

zqdjd7g9

zqdjd7g91#

它必须是total%2,而不是代码中的total/2

if(total%2 == 0){
    System.out.println("Even");
} else {
    System.out.println("Odd");
}
bxjv4tth

bxjv4tth2#

使用 *mod**运算符 * %来确定余数。

if(total%2 == 0)

更快的方法是直接解析 char 值。
此外,parityinteger 的属性,因此这包括 * 负值 *。

String number = args[0];
int total =0;
for (char c : number.toCharArray())
    total += Character.digit(c, 10);
System.out.println(total % 2 == 0 ? "Even" : "ODD");

下面是一个使用 stream 的例子。

System.out.println(
    args[0].chars()
           .map(x -> Character.digit((char) x, 10))
           .sum() % 2 == 0 ? "Even" : "ODD"
);

相关问题