программа, которая считывает три целых числа и выводит истину, если ровно одно число положительно

Напишите программу, которая считывает три целых числа и выводит истину, если ровно одно число положительно (т.е.> 0).

В противном случае он должен напечатать false.

import java.util.Scanner;

  class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int a = scanner.nextInt();
    int b = scanner.nextInt();
    int c = scanner.nextInt();
    boolean res =(a>0)&&(b<=0)&&(c<=0)||(c>0)&&(a<=0)&&(b<=0)||(b>0)&&(a<=0)&&(b<=0);
    System.out.println(res);
}
}

Но если к примеру ввести числа: 0 2 0, то программа работать не будет. Подскажите, как исправить выражение,чтобы все работало нормально.


Ответы (1 шт):

Автор решения: tym32167

Вообще у вас ошибка вот тут

(b>0)&&(a<=0)&&(b<=0)

Вы b проверяете 2 раза, а с не проверяете совсем.

Чтобы не писать трехэтажные выражения, как вариант

import java.util.Scanner;

  class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int a = scanner.nextInt();
    int b = scanner.nextInt();
    int c = scanner.nextInt();
    int count = 0;
    if (a > 0) count++;
    if (b > 0) count++;
    if (c > 0) count++;
    boolean res = count == 1;
    System.out.println(res);
}
}
→ Ссылка