提问人:James Raitsev 提问时间:5/10/2011 更新时间:5/10/2011 访问量:1149
如何在用户提交新行后备份行?爪哇岛
How to back up a line after a new line submitted by a user? Java
问:
假设,您要求用户通过 Java 中的控制台应用程序为您提供一些输入。他们做并击中.你得到字符串并做一些事情作为回应。比如说,你根据用户的输入计算一些值,然后打印出来。Enter
如何在与用户输入相同的行上打印出响应?我想(可能)删除一个新行字符,并在他的输入旁边打印出一个响应。
请告知如何使用 Java 执行此操作。
谢谢。
答:
3赞
crackerplace
5/10/2011
#1
你不能通过基本的Java来控制控制台,我认为你可以使用JLine来控制java 6 Console.In 你有java.io.Console类,当必须读取密码时,你可以通过它来回显星号*。http://blogs.oracle.com/alanb/entry/java_io_console_is_finally
1赞
James Jithin
5/10/2011
#2
我试图在库的帮助下实现它,这是您正在寻找的东西的演示jcurses
import jcurses.system.CharColor;
import jcurses.system.InputChar;
import jcurses.system.Toolkit;
public class TestClass {
public static void main(String[] args) {
try {
CharColor printColor = new CharColor(CharColor.BLACK, CharColor.WHITE);
int i = 0;
int j = 0;
while (true) {
StringBuilder str = new StringBuilder();
InputChar c = null;
do {
c = Toolkit.readCharacter(); //Read each character
if (c.getCharacter() != 10) { //Do not print character if Return key
str.append(c);
Toolkit.printString(String.valueOf(c), i++, j, printColor); //Print character as you type
}
} while (c.getCharacter() != 10);
Toolkit.printString(processInput(str.toString()), i, j++, printColor);
i = 0;
if (j == Toolkit.getScreenHeight()) {
Toolkit.clearScreen(printColor);
j = 0;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String processInput(String input) {
return " Input processed";
}
}
0赞
user unknown
5/10/2011
#3
您可以使用 ANSI 代码。在 Linux 中,我使用它们从来没有问题,但在 Windows 上,您必须先安装ANSI.SYS。
import java.util.Random;
public class AnsiMove
{
public AnsiMove ()
{
Random random = new Random ();
System.out.print ("ESC[2J");
for (int i = 0; i < 10000; ++i)
{
int y = random.nextInt (23) + 1;
int x = random.nextInt (79) + 1;
char c = (char) (random.nextInt (95) + 32);
gotoXY (x, y);
System.out.print (c);
pause (1);
}
}
void pause (int p)
{
try
{
Thread.sleep (p);
}
catch (InterruptedException e)
{
System.err.println (e);
}
}
void gotoXY (int x, int y)
{
System.out.print ("ESC[" + y + ';' + x + 'H');
}
/** */
public static void main (String args[])
{
new AnsiMove ();
}
}
评论