Некоторые в комментариях пишут что через остаток отделения решается, но я что-то не понял как. Интересны все способы.
public static void main(String[] args) throws Exception {
//green 3 min, yellow 1 min, red 1 min
Scanner scanner = new Scanner(System.in);
double x = scanner.nextDouble();
int green = 3, yellow = 1, red = 1;
int time = 0;
while (true){
time += green;
if (time - 0.00000001 >= x) {
System.out.println("зелёный");
break;
}
time += yellow;
if (time - 0.00000001 >= x) {
System.out.println("желтый");
break;
}
time += red;
if (time - 0.0000001 >= x) {
System.out.println("красный");
break;
}
}
}