我是Java和面向对象编程的新手。假设我创建了一个二维数组游戏网格并使用字符初始化数组,如下所示:
+++++
+...+
+++++
我想用 123 更新 ... 。 我有以下代码:
while (true) {
if (....) map.printMap(); //what should be the condition here??
else ...dosomethingelse...;
}
我的问题是,是否存在一种方法可以放在 if 条件下,以便网格在输入1之前自己保持打印?如果它检测到输入1,它将在此时停止打印,执行 else 条件更新网格,然后按如下方式打印出来:
+++++
+1..+
+++++
之后,它继续在屏幕上继续打印更新的网格,并遵循上述相同的模式,直到所有 ... 更新。
有什么想法吗?提前谢谢。
答案 0 :(得分:1)
我会使用两个线程:
您也可以通过调用available()
方法尝试执行此操作,但该方法的指定语义是难以(不可能?)以便携式使用它;即,不依赖于控制台输入堆栈的行为,这可能因操作系统而异。
答案 1 :(得分:0)
您可以尝试以下内容:
try {
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(reader);
while (true) {
map.printMap();
if(!reader.ready()) {
Thread.sleep(1000);
continue;
}
String command = buf.readLine();
System.out.println("Command: " + command);
}
} catch(Exception e ){
e.printStackTrace();
}