有什么方法可以仅使用Java SE创建某种交易? 例如,我们有一些带有main和输入方法的类。我们要做的是在控制台中添加一些数字,将它们添加到列表中,然后返回此列表。但是,如果用户在5秒钟内未在控制台中输入任何数字-程序将清除我们的列表,返回此空列表并停止。
例如虚拟代码:
public class SomeClass {
public static void main(String[] args) {
inputNumbers().forEach(System.out::println);
}
public List<String> inputNumbers() {
Scanner scanner = new Scanner(System.in);
List<String> result = new ArrayList<>();
for (int i = 0; i < 10; i++) {
result.add(scanner.nextLine());
//if nothing happen within 5 sec
//result.clear();
//return out empty result;
}
return result;
}
}
答案 0 :(得分:1)
查看Java TimerTask类文档。提供了按计划执行此类操作的方法。
答案 1 :(得分:1)
这是使用计时器任务和AWT机器人的一种选择。
public class SomeClass {
private volatile boolean exitFlag = false;
public static void main(String[] args) {
new SomeClass().inputNumbers().forEach(System.out::println);
}
public List<String> inputNumbers() {
Scanner scanner = new Scanner(System.in);
List<String> result = new ArrayList<>();
Timer t = setTimer(5000);
for (int i = 0; i < 10; i++) {
result.add(scanner.nextLine());
if(exitFlag) {
break;
}
}
scanner.close();
t.cancel();
return result;
}
private Timer setTimer(int delay) {
Timer t = new Timer();
t.schedule(
new java.util.TimerTask() {
@Override
public void run() {
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
exitFlag = true;
} catch (AWTException e) {
e.printStackTrace();
}
}
},
delay
);
return t;
}
}