Write in java

Objective: develop a program to simulate the control of traffic lights at an intersection using static methods.
Problem statement: design a system that manages the traffic lights at a four-way intersection, cycling through the different light phases(green,yellow,red).
Requirements:
Handle light phrases:
-create individual static methods for each phase: redLight(), yellowLight(), greenLight().
-Define rules for transitioning between phases, ensuring proper sequencing.
Timing system:
-implement static methods to manage time intervals, such as setGreenTime(int seconds).
-Include safety checks to prevent unrealistic timing.
Text-based visualization:
-use a static method to print the current state of the intersection with ASCII art or a simple text representation.
User interaction:
implement a menu system through static methods allowing users to manually control lights or change timings.
-include validation to ensure user input adheres to traffic regulations.

Sample output:
Welcome to the traffic light controller!
Choose a traffic light phase:
1. Green light
2. Yellow light
3. Red light
4. Exit
1
Intersection Status: Green light
Choose a traffic light phase:
1. Green light
2. Yellow light
3. Red light
4. Exit
2
Intersection Status: Yellow light
Choose a traffic light phase:
1. Green light
2. Yellow light
3. Red light
4. Exit
3
Intersection Status: Red light
Choose a traffic light phase:
1. Green light
2. Yellow light
3. Red light
4. Exit
4
Exiting Traffic Light Controller.

Here's an example implementation of the program in Java:

```java
import java.util.Scanner;

public class TrafficLightController {
private static int greenTime = 30; // Default green time in seconds

public static void main(String[] args) {
System.out.println("Welcome to the traffic light controller!");

boolean running = true;
while (running) {
printMenu();
int choice = getChoice();

switch (choice) {
case 1:
greenLight();
break;
case 2:
yellowLight();
break;
case 3:
redLight();
break;
case 4:
running = false;
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}

System.out.println("Exiting Traffic Light Controller.");
}

private static void printMenu() {
System.out.println("Choose a traffic light phase:");
System.out.println("1. Green light");
System.out.println("2. Yellow light");
System.out.println("3. Red light");
System.out.println("4. Exit");
}

private static int getChoice() {
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}

private static void greenLight() {
System.out.println("Intersection Status: Green light");
// Perform any green light related actions here
}

private static void yellowLight() {
System.out.println("Intersection Status: Yellow light");
// Perform any yellow light related actions here
}

private static void redLight() {
System.out.println("Intersection Status: Red light");
// Perform any red light related actions here
}

private static void setGreenTime(int seconds) {
if (seconds < 15 || seconds > 60) {
System.out.println("Invalid green time value. Green time must be between 15 and 60 seconds.");
} else {
greenTime = seconds;
}
}
}
```

You can extend this program to include the actual logic and timing for each phase, as well as any additional features as per the requirements.