Долго не мог решить эту задачу и подсмотрел, что многие используют деление без остатка на 5. Не понимаю почему мы это здесь используем ? Разве решение которое не закомментировано не имеет схожий смысл ?
public class Solution {
    public static void main(String[] args) throws Exception {
        //напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        double t = Double.parseDouble(reader.readLine());
//        double number = t % 5;
//        System.out.println(t);
        if (t >= 0 & t < 3.0){
            System.out.println("зелёный");
        }else if (t >= 3.0 & t < 4.0){
            System.out.println("жёлтый");
        }else if (t >= 4.0 & t < 5.0) {
            System.out.println("красный");
        }else if (t > 5.0){
            System.out.println("зелёный");
        }
    }
}