Извините, я только изучаю 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.");
}
}
}
Потому что -1
не 1
. (Отрицательные нечетные числа дают -1 в качестве остатка)
Потому что -3 % 2 = -1
настолько отрицательные значения %
даже отрицательные или 0.
Остаток от деления отрицательного числа на положительное число будет отрицательным.
-1 % 2
является
-1
но поскольку это не 1, вы объявите его четным.
Может просто проще в использовании
(x % 2) != 0
, пресс не нужен.