public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader t = new BufferedReader(new InputStreamReader(System.in)); //Вводим значение t с клавиатуры и переводим его строковый тип данных
int x = Integer.parseInt(t.readLine()); // делаем числовой тип и присваиваем переменную x
int g = 3; //зеленый. Будет принимать значения для решения от 0 до 6 (6 не включая))
int y = 1; //желтый. Будет принимать значения для решения от 6 до 8 (8 не включая))
int r = 1; //красный. Будет принимать значения для решения от 8 до 0 (0 не включая))
// например ввели число 21 с клавиатуры
if (0<=x%(g+y+r) && x%(g+y+r)<g%(g+y+r))
// if (0<=21%(3+1+1) && 21%(3+1+1)<3%(3+1+1)
// if (0<=2 && 2<6)
System.out.println("зеленый");
else if (g%(g+y)<x%(g+y+r) && x%(g+y+r)<g%(g+y+r))
System.out.println("желтый");
else if(g%(g+y+r)<x%(g+y+r) && x%(g+y+r)<g%(g+y+r))
System.out.println("красный");
}
}
Посмотрите закомментированные строки, и что тут не так?Aleksey T.
18 уровень
Задача запускается, но ни одно условие не выполнено! Помогите разобраться!
Решен
Комментарии (12)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
14 декабря 2019, 19:37
int - не вещественное число
0
Aleksey T.
14 декабря 2019, 19:42
не понял, можно более подробнее
0
Ksenia VolkovaJava Developer в DXCMaster
14 декабря 2019, 19:48решение
int - это целочисленный тип.
Вещественные типы в java - float и double.
Предпочтительней использовать double
+2
Aleksey T.
14 декабря 2019, 19:57
Ксенья, спасибо, поменял в строке
int на double и заработало, в формуле только где-то знаки не так теперь стоят, сейчас выясню.
Такой вопрос, а для doubel и других типов используется такая же конструкция?
0
Ksenia VolkovaJava Developer в DXCMaster
14 декабря 2019, 19:59
Конструкция в целом такая же.
Только Double.parseDouble()
Но откуда у тебя 6 и 8 взялись?
Почему ты решил, что зелёный с 0 до 6, если он горит 3 минуты?
Зачем ты используешь конструкции типа (g+y+r), если это постоянная величина? У тебя там и ошибка, кстати.
А g%(g+y+r) - просто лишнее, это выражение будет равно просто g
+1
Aleksey T.
14 декабря 2019, 20:04
1) так как весь круг от у нас длится 5 минут, то я 1/5 = 0,2 при помощи оператора % я узнаю десяток а это 2
2) значит 3 минуты (это с 0 до (3*2) 6)
1 минута - желтый (с 6 до 8)
1 минута -красный (с 8 до 0)
0
Ksenia VolkovaJava Developer в DXCMaster
14 декабря 2019, 20:05
Так, стоп.
Что делает оператор % ?
0
Aleksey T.
14 декабря 2019, 20:06
ну смотри, я же правильно понял что он возвращает остаток
например берем 23%5=4.6 и 6 он нам вернул
нет?
0
Aleksey T.
14 декабря 2019, 20:08
"Зачем ты используешь конструкции типа (g+y+r), если это постоянная величина? "
я использую для того, мало ли в дальнейшем я захочу поменять переменные
0
Ksenia VolkovaJava Developer в DXCMaster
14 декабря 2019, 20:10полезный
Нет. Остаток - это не десятые доли. Остаток - это остаток.
23 / 5 = 4 (и 3 в остатке)
23 % 5 = 3
Тогда заведи переменную, равную r + g + y и используй ее.
Если поменяешь исходные - она тоже поменяется. Зато будет меньше вероятность ошибок/опечаток.
+2
Aleksey T.
14 декабря 2019, 20:12
Завести переменную - это здравое решение!
0
Aleksey T.
14 декабря 2019, 20:30
Вот, довел код до ума, теперь все работает как надо, Ксенья, спасибо за помощь)
0