Вопрос по задаче "Существует ли пара?" (4 уровень, 4 лекция).
Будьте добры, объясните пожалуйста!
Почему если я ставлю сравнение
else if (c == a & b==c) System.out.println(a + " " + b + " " + c);
/*результат которого должен вывести на экран все три числа*/
передпоследним, т.е. внизу, перед else, то программа при вводе трех двоек, выводит на экран только две, а IntellijIdea, еще и подсвечивает выражение "c == a & b==c", как такое которое будет always 'false'.
Но если я ставлю его первым
if (c == a & b==c) System.out.println(a + " " + b + " " + c);
то все отлично - программа компилируется, задача засчитана.
Объясните пожалуйста как логику кода в первом и во втором случае воспринимает программа?
package com.javarush.task.task04.task0417;
/*
Существует ли пара?
*/
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 e = bufferedReader.readLine();
int a = Integer.parseInt(e);
String f = bufferedReader.readLine();
int b = Integer.parseInt(f);
String g = bufferedReader.readLine();
int c = Integer.parseInt(g);
if (c == a & b==c)
System.out.println(a + " " + b + " " + c);
else if (b==c)
System.out.println(b + " " + c);
else if (a==c)
System.out.println(a + " " + c);
else if (a==b) /* то есть если бы я здесь поставил это сравнение else if (c == a & b==c) System.out.println(a + " " + b + " " + c); то программа б не сработала. Почему ?*/
System.out.println(a + " " + b);
else ;
}
}
Андрей
20 уровень
Это не проблемы/замечания. Это вопрос по существу.
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
5 ноября 2019, 08:11решение
Потому что выражения в else рассматриваются только в том случае, если предыдущие условия не сработали.
Если у тебя сначала стоит проверка на (a == b), а потом в else if - на (a == b) && (b == c), то до этой проверки дело просто не дойдет, т.к. сработает первый if
+2
Андрей
5 ноября 2019, 08:15
Спасибо за помощь, Ты молодчинка !
0