Я пытаюсь сделать приложение, которое копирует работу лифта (2 этажа).Но когда я спрашиваю пользователя, на какой этаж он хочет пойти, есть 2 разных варианта.Первый, пользователь вводит этаж и лифт движется.Второй, через 10 секунд, по-прежнему не отвечает пользователю, в этот момент лифт должен закрыть свою дверь и выключить свет.
Так что моя проблема с тайм-аутом, потому что я хочу, чтобы мой "пока ", чтобы продолжить.
Моя основная:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class TP5 {
private String floorAsk = "";
TimerTask task = new TimerTask() {
public void run() {
if (floorAsk.equals("")) {
System.out.println("No response ...");
task.cancel();
}
}
};
public boolean getInput() throws Exception {
Timer timer = new Timer();
timer.schedule(task, 10 * 1000);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
floorAsk = in.readLine();
timer.cancel();
System.out.println("Floor ask " + floorAsk);
return true;
}
/**
* main.
* @param args ceci est un String[]
*/
public static void main(String[] args) {
Controller c = new Controller();
Door p = new Door();
Light l = new Light();
Engine m = new Engine();
Button b = new CallButton();
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("What is your floor ?");
String actualFloorString = sc.nextLine();
int actualFloor = Integer.parseInt(actualFloorString);
if (actualFloor == 0 || etageAct == 1) {
System.out.println("You are at floor " + actualFloorString);
if (actualFloor != c.getShaft()) {
if (actualFloor > c.getShaft()) {
m.up();
} else if (actualFloor < c.getShaft()) {
m.down();
}
}
if (!l.isOn()) {
l.on();
}
if (!p.isOpen()) {
p.open();
}
System.out.println("Which floor do you want to go ?");
try {
(new TP5()).getInput();
} catch (Exception e) {
System.out.println(e);
}
System.out.println("test");
} else {
System.out.println("Please enter a valid floor (0 or 1)");
}
}
}
}
Я пытаюсь использовать это решение: Ограничение по времени для входа
, но я хочучтобы вернуться в свое «время», и я не знаю, как это сделать или если я использую правильный способ сделать это.
У меня также есть какой-то другой класс, Contoleur, Lumiere, Moteur,Порт, Бутон.Но я еще не кодировал функции.
Спасибо за ваш ответ
РЕДАКТИРОВАТЬ
Хорошо, я могу найти способ, я изменяю свой код, и теперь у меня есть функциякоторый принимает параметр сканер и строку:
public static int ask(Scanner sc, String t) {
System.out.println(t);
return sc.nextInt();
}
И мне было интересно, что, возможно, можно установить таймаут для функции.Вы знаете, возможно ли это?