программа, которая считывает три целых числа и выводит истину, если ровно одно число положительно
Напишите программу, которая считывает три целых числа и выводит истину, если ровно одно число положительно (т.е.> 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);
}
}