Как я могу отобразить число, если оно делится на два числа, а не на треть в java? - PullRequest
1 голос
/ 22 октября 2019

Как я могу отобразить число, если оно делится на два числа, а не на треть в java? Я не уверен, правильно ли я понял последний оператор в отношении этой части || ((a % 4) == 0)) кода ниже.

int a = 15;

if ((( a % 5) == 0) || ((a % 10) == 0) || ((a % 4) == 0)) {
    System.out.println("Number entered is divisible by 5 and 10 but not 4");
} else {
    System.out.println("ERROR");
}

Ответы [ 3 ]

5 голосов
/ 22 октября 2019

Объяснение

Ваше состояние неверное. Позвольте мне объяснить, что означает ваше состояние на английском языке. Вы написали:

(( a % 5) == 0) || ((a % 10) == 0) || ((a % 4) == 0)

То есть a делится на 5 или , делится на 10 или этоделится на 4.

Есть две проблемы:

  1. Вы объединили их с или вместо и (&&)
  2. Вы проверяете, делится ли оно на 4, а не на , не , делится на 4 (!= 0)

Решение

Правильное условие:

a % 5 == 0 && a % 10 == 0 && a % 4 != 0

Примечания

Скобка может быть удалена из-за приоритета оператора (см. официальный учебник ).

Обратите внимание, что a % 10 == 0 уже подразумевает a % 5 == 0. Таким образом, для этих конкретных чисел вы можете упростить условие до:

a % 10 == 0 && a % 4 != 0
3 голосов
/ 22 октября 2019

изменить || на && и (a % 4) == 0) на (a % 4) != 0)

2 голосов
/ 23 октября 2019

Вам нужно правильно использовать условие if, используя && вместо ||как показано ниже, также вы можете сделать свой код более эффективным, не проверяя условие% 10 == 0, так как это избыточно (Любое, не делимое на 10, также делится на 5) Попробуйте приведенный ниже код. Это должно работать.

int a = 15;
if ( (a%5 == 0) && (a%4 != 0)) {
    System.out.println("Number entered is divisible by 5 and 10 but not 4");
} else {
    System.out.println("ERROR");
}
...