Посмотрел комментарии, если правильно понял, то 0 это красный, 3 это уже желтый, 4 уже красный. То есть от 0,0 до 0,0 это красный, от 0,1 до 2,9 это зеленый, от 3,0 до 3,9 это желтый, от 4,0 до 4,9 это красный. Разве мой код не удовлетворяет этим требованиям? Хотя если вдуматься в условия данные в задании, то в моей реализации пропадает 2 секунды, кажется. Но в тех же условиях в примере дано именно то что у меня реализовано.
package com.javarush.task.task04.task0416;
/*
Переходим дорогу вслепую
*/
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String s = bufferedReader.readLine();
double a = Double.parseDouble(s);
final double hour = 60.0;
if (green(a, hour)){
System.out.print("зелёный");
} else if (yellow(a, hour)){
System.out.print("жёлтый");
} else if (red(a, hour)){
System.out.print("красный");
}
}
public static boolean green(double a, double hour){
boolean check = false;
for (int i = -2; i < (int)hour; i = i + 3) {
if (a >= (i - 3.0) && a <= (i - 0.1)) {
if (i != 0.0) {
check = true;
break;
} else {
check = false;
}
}
i = i + 2;
}
return check;
}
public static boolean yellow(double a, double hour){
boolean check = false;
for (int i = -4; i < (int)hour; i = i + 4){
if (a >= (i - 1) && a <= (i - 0.1)){
check = true;
break;
}
i = i + 4;
}
return check;
}
public static boolean red(double a, double hour){
boolean check = false;
for (int i = -4; i < (int)hour; i = i + 5){
if (a >= (i - 1) && a <= (i - 0.1)){
check = true;
break;
}
if (a == 0){
check = true;
break;
}
i = i + 4;
}
return check;
}
}