Почему мой код не работал с введенными отрицательными значениями?

Извините, я только изучаю 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, пресс не нужен.

Andy Turner 27.05.2019 20:35

Потому что -1 не 1. (Отрицательные нечетные числа дают -1 в качестве остатка)

tevemadar 27.05.2019 20:36

Потому что -3 % 2 = -1 настолько отрицательные значения % даже отрицательные или 0.

Samuel Philipp 27.05.2019 20:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
234
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Остаток от деления отрицательного числа на положительное число будет отрицательным.

-1 % 2  

является

-1

но поскольку это не 1, вы объявите его четным.

Другие вопросы по теме