在从用户(从终端)获取输入后,您将如何重新打印一行?
我意识到您可以使用以下方式重新打印一行:
System.out.print("\r foo");
System.out.print("\r bar");
哪个会产生输出:
bar
但是一旦你收到用户的意见,这似乎不起作用。例如:
System.out.print("\r foo");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.print("\r bar");
如果输入1作为输入,则会得到:
foo1
bar
一旦用户提供输入,您可以在foo(或更具体地说,foo1)的同一行重新打印吗?
答案 0 :(得分:0)
这里的关键可能是“原始”与“熟”的输入模式。要做你想做的事,你需要使用“原始”模式,你可以在键入的每个角色中收集它们,并决定如何处理它,包括你是否将它回显到控制台。
熟化模式对于简单的命令行程序输入更常见,基本上意味着“一次一行给我用户的输入”。并且“一次一行”通常转换为“当用户按下输入时”。大多数“熟”的实现都会将键盘输入回显到控制台。
由于种种原因,在CLI程序中执行“原始”模式很困难 - 不是不可能,而是困难。我将在这个场地(这里有很多,不适合在这里轻松复制和粘贴)的细节,而是指向你几年前尝试相同时使用的资源:
Non blocking console input in Python and Java
快速 hunteke 摘要:终端/控制台需要更改状态,而不仅仅是程序,并且没有可移植的方法。您将外包给其他图书馆或程序以执行您想要的操作 - 只是不要忘记在程序退出时撤消它,否则您的用户将不满意!