Всем привет. Случайно в прошлый раз закрыл вопрос как решённый, по этому дублирую тему.
В чём проблема? Код работает, выводит на экран нужные цвета, ввод работает на вещественное число.
Вроде всё как надо, но проверку не проходит.
Поясню для ускорения понимания логики кода.
В коде размещено 3 цикла:
1. Цикл while - вечный цикл в котором располагаются: часовой цикл и цикл смены цветов (цикл while почему то тут не отобразился, видимо я его позже добавил, но он тут вообще не обязателен, он нужен для того, чтобы показать, что 1 часом работа светофора не ограничивается).
2. 1ый for - часовой цикл работы светофора.
3. 2ой for - цикл смены цветов, состоящий из 3 итераций (со вложенными условиями if).
В цикле смены цветов, за одну итерацию проверяется только одно условие, для вывода одного цвета.
В случае соответствия введённого вещественного числа с условием для вывода цвета, цвет выводится.
⚫ Переменная 'x' несёт функцию счётчика внутреннего цикла (цикла смены цветов),
её задачей является отсчёт количества минут с момента старта цикла
(для дальнейшего сравнения с введённым пользователем вещественным числом 't').
⚫ Переменная 't' - отвечает за ввод целочисленного числа.
P.S. — в условиях for и if специально указал тип double, чтобы было единообразие.
package com.javarush.task.task04.task0416;
/*
Переходим дорогу вслепую
*/
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
double t = 0.00;
t += Double.parseDouble(reader.readLine());
double x = 0.00;
for (double j = 1.00; j < 12.00; j++) { // - часовой цикл
for (double a = 0.00; a <= 3.00; a++) { // - 5 минутный цикл смены цветов
//...проходящий 3 итерации
if (a == 0.00) { //...за каждую итерацию проверяется
x += 2.99999; //...условие для 1 цвета
if (t <= x) {
System.out.println("зелёный");
return;
}
}
if (a == 1.00) {
x += 1.00;
if (t <= x) {
System.out.println("жёлтый");
return;
}
}
if (a == 2.00) {
x += 1.00;
if (t <= x) {
System.out.println("красный");
return;
}
}
}
}
}
}