【问题标题】:Why is was my code not performing with negative values inputted? [duplicate]为什么我的代码没有在输入负值的情况下执行? [复制]
【发布时间】:2019-05-27 18:30:57
【问题描述】:

对不起,我刚刚学习 Java,我是编码新手! 我的代码的任务是根据奇数和偶数来评估输入。 如果没有 math.abs 行,代码将无法正确识别负数的奇/偶值。

我使用 math.abs 命令进行了修复,以转换负值并获得所需的结果。但是,我只是想知道为什么这一步是必要的,以及 java 扫描器如何解释负值/符号并在没有我修复的情况下提供错误的答案。

import java.util.Scanner;

public class EvenOrOdd {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        System.out.print("Type a number: ");
        int x = Integer.parseInt(reader.nextLine());
        int f = Math.abs(x);

        if ( f % 2 == 1){
            System.out.println("The number is odd.");
        }
        else {
            System.out.println("The number is even.");
        }
    }
}

【问题讨论】:

  • 可能只是更容易使用(x % 2) != 0,不需要abs。
  • 因为-1 不是1。 (负奇数给 -1 作为余数)
  • 因为-3 % 2 = -1 所以负值% 甚至是负数或0。

标签: java java.util.scanner


【解决方案1】:

负数除以正数的余数为负数。

-1 % 2  

-1

但由于它不是 1,所以你将它声明为偶数。

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2012-02-02
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多