Задача "Светофор"
Дан светофор. Он горит 3 цветами (r - red, y - yellow, g - green). Цвета меняются по очереди R->Y->G->Y->R->Y->G->Y->..... В программу вводиться 4 целых числа: r, y, g - сколько горит каждый цвет в секундах и s - количество секунд прошедших с 0 секунды. В 0 секунду загорается красный цвет.
green если задано r = y = g = 1, s = 5, то:
в 0 секунду горит red
в 1 - yellow
в 2 - green
в 3 - yellow
в 4 - red
в 5 - yellow
Программа должна вывести цвет (red, yellow, green), который будет гореть в момент s.
Формат входных данных: На единственной строке задано четыре целых числа: r, y, g, s разделенные пробелом. 1 <= r, y, g <= 10^9, r + y + g <= 10^9, 0 <= s <= 10^9.
Формат выходных данных:
Единственное слово: red, yellow или green.
Примеры:
Входные данные: 1 1 1 5 | yellow
Выходные данные: 2 2 2 5 | green
import java.util.Scanner;
public class Task21 {
public static void main (String[]args){
Scanner scanner = new Scanner(System.in);
int r = scanner.nextInt(); //вводимое значение для красного цвета(сколько времение горит).
int y = scanner.nextInt(); //вводимое значение для желтого цвета(сколько времение горит).
int g = scanner.nextInt(); //вводимое значение для зелёного цвета(сколько времение горит).
int s = scanner.nextInt(); //колличество секунд,прошедших с нулевой(0) секунды.;
int sum = s%(r+y+g);
if (s >= 0 && s <= r) System.out.println("green");
if (s >= r && s <= y) System.out.println("yellow");
if (s >= y && s <= g) System.out.println("red");
}
}
Нужно как-то дописать код,что бы он работал.Хэлп плиз) Только начал изучать Java.
Ответы (1 шт):
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] values = scanner.nextLine().split(" "); //Считываем строку(nextLine()) и разделяем по пробелам (split(" "))
scanner.close(); // Закрываем Scanner
// Переводим значения введенные с клавиатуры в int, а они были String:
int r = toInt(values[0]);
int y = toInt(values[1]);
int g = toInt(values[2]);
int s = toInt(values[3]);
int sum = s%(r+y+g+y);
if (sum < r) { // Если сумма меньше, чем время горения красного (R)
System.out.println("red");
} else if (sum < r+y) { // Если сумма меньше, чем время горения красного и желтого (R+Y), тк они друг за другом горят
System.out.println("yellow");
} else if (sum < r+y+g) { // Если сумма меньше, чем время горения красного, желтого и зеленого (R+Y+G), тк они друг за другом горят
System.out.println("green");
} else { // Если никакое условие из кода выше(где "if"), не выполнилось выполняем этот кусок
System.out.println("yellow");
}
// Дальше "if" нет, тк мы используем "%"(остаток от деления)
}
private static int toInt(String s)
try { // Пытаемся конвертировать String в int
return Integer.valueOf(s);
} catch (NumberFormatException e) { // Если не получается (например ты ввел не число, а букву), то возвращаем 0
return 0;
}
}