Задача на условный оператор if
Решаю сборник задач "1000 задач по программированию часть 1. М.Абрамян"(https://vk.com/doc137181225_441506453?hash=259564739f7712e1f3&dl=602b3757520f898ac8).
Не могу решить задачу "If27". Первая ветвь else if работает(т.е ввожу число, которое принадлежит соответствующему промежутку. Например х=2,75 принадлежит промежутку [2;3), после ввода показывает "1", все ок.). Но не работает 2-я ветвь, т.е если я допустим возьму число x=1.26, которое принадлежит [1;2), на экран не выводится "-1".
Решение:
public class If27 {
public static void main(String[] args) {
double x = Double.parseDouble(args[0]);
int begin = Integer.parseInt(args[1]);
double r1 = 2*begin + (int) (Math.random());
double r2 = 1 + 2*begin + (int) (Math.random());
if (x < 0) {
System.out.println("0");
}
else if (x >= r1 && x < r2) {
System.out.println("1");
}
else if (x > r1 && x <= r2) {
System.out.println("-1");
}
}
}
Ответы (1 шт):
У вас условия почти эдентичны, за исключением равенства числа одному из r.
У вас и в первом и втором случае всегда число с запятой будет входить в промежуток обоих условий.
сравните:
x = 1.5
r1 = 1.1;
r2 = 2.1;
----------------
1.1 <= 1.5 < 2.1
и
1.1 < 1.5 <= 2.1
вот если было бы так:
x = 1.1
r1 = 1.1;
r2 = 2.1;
----------------
1.1 <= 1.1 < 2.1
и
1.1 < 1.1 <= 2.1
или
x = 2.1
r1 = 1.1;
r2 = 2.1;
----------------
1.1 <= 2.1 < 2.1
и
1.1 < 2.1 <= 2.1
совсем другой разговор