Почему последнее условие не выполняется?
package com.javarush.task.task04.task0429;
/*
Положительные и отрицательные числа
*/
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String aa = bufferedReader.readLine();
String bb = bufferedReader.readLine();
String cc = bufferedReader.readLine();
int a =Integer.parseInt(aa);
int b =Integer.parseInt(bb);
int c =Integer.parseInt(cc);
if(a>0 && b>0 && c>0) {
System.out.println("количество отрицательных чисел: 0");
System.out.println("количество положительных чисел: 3");}
else if(a>0 && b>0 && c<0) {
System.out.println("количество отрицательных чисел: 1");
System.out.println("количество положительных чисел: 2");}
else if(a>0 && b<0 && c>0) {
System.out.println("количество отрицательных чисел: 1");
System.out.println("количество положительных чисел: 2");}
else if(a<0 && b>0 && c>0) {
System.out.println("количество отрицательных чисел: 1");
System.out.println("количество положительных чисел: 2");}
else if(a<0 && b>0 && c<0) {
System.out.println("количество отрицательных чисел: 2");
System.out.println("количество положительных чисел: 1");}
else if(a>0 && b<0 && c<0) {
System.out.println("количество отрицательных чисел: 2");
System.out.println("количество положительных чисел: 1");}
else if(a<0 && b<0 && c>0) {
System.out.println("количество отрицательных чисел: 2");
System.out.println("количество положительных чисел: 1");}
else if(a<0 && b<0 && c<0) {
System.out.println("количество отрицательных чисел: 3");
System.out.println("количество положительных чисел: 0");}
else if(a==0 || b==0 || c==0){
if((b>0 && c>0)||(a>0 && b>0)||(a>0 && c>0)){
System.out.println("количество отрицательных чисел: 0");
System.out.println("количество положительных чисел: 2");}
else if((a<0 && b<0)||(b<0 && c<0)||(a<0 && c<0)){
System.out.println("количество отрицательных чисел: 2");
System.out.println("количество положительных чисел: 0");}
else if((a>0 && b<0) || (a<0 && b>0) || (b>0 && c<0) ||(b<0 && c>0) ||(a>0 && c<0) ||(a<0 && b>0)){
System.out.println("количество отрицательных чисел: 1");
System.out.println("количество положительных чисел: 1");
}
else if( a<0 || b<0 || c<0 ) {
System.out.println("количество отрицательных чисел: 1");
System.out.println("количество положительных чисел: 0");}
else if( a>0 || b>0 || c>0 ) {
System.out.println("количество отрицательных чисел: 0");
System.out.println("количество положительных чисел: 1");}
}
}
}
Присмотрись к укороченным логическим операторам && и ||Их надо применять аккуратно, если все так путанно проще заменить их & и | соотвественно.И соглашусь с Yuriy - проще было бы посчитать, а не выгадывать каждое возможное условие. Так можно запутаться и не заметить еще какой нибудь вариант. Да и такой подход сродни замене циклов ручному повторению команд нужное количество раз. UPD - тут опытные люди говорят, что укороченные логические операторы полезнее, посему свой совет зачеркиваю...