Condition is always true
В общем дана задача на нахождение НОД.
Следуя данному алгоритму - всё работает, кроме одного.
Idea ругается что в while (a != 0 || b != 0) - Condition is always true.
При запуске код падает с ArithmeticException: / by zero, потому что даже когда a либо b доходит до 0, то всё равно выполняется цикл while
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
if (a <= 0 || b <= 0) {
throw new Exception();
} else {
while (a != 0 || b != 0) {
if (a > b)
a = a % b;
else
b = b % a;
}
}
System.out.println(a + b);
}
Вот в таком варианте - всё работает, исключений нету
while (true) {
if (a != 0) {
if (b != 0) {
if (a > b)
a = a % b;
else
b = b % a;
} else
break;
} else
break;
}