在Java中移动命令行界面的打印位置而不使用外部库

在Java中移动命令行界面的打印位置而不使用外部库,java,command-line,command-line-interface,caret,Java,Command Line,Command Line Interface,Caret,在C语言中,我回忆说,我可以在命令行界面屏幕上移动不可见的插入符号(相对于行和字符位置),这意味着我可以让程序在屏幕上的任何位置打印任何文本。我们在Java中有这样的命令吗 例如,以下是C语言中的伪代码: int main(){ printf("launching program\n"); moveTo(4,3); //move to line 4 at character index 3 on the screen. printf("AAA"); moveTo(

在C语言中,我回忆说,我可以在命令行界面屏幕上移动不可见的插入符号(相对于行和字符位置),这意味着我可以让程序在屏幕上的任何位置打印任何文本。我们在Java中有这样的命令吗

例如,以下是C语言中的伪代码:

int main(){
    printf("launching program\n");
    moveTo(4,3); //move to line 4 at character index 3 on the screen.
    printf("AAA");
    moveTo(3,0); //move to line 3 at character index 0 on the screen.
    printf("BBB");
    moveTo(2,1); //move to line 2 at character index 1 on the screen.
    printf("CCC");
    return 0;
}
这将在命令行界面中提供以下输出:

launching program

 CCC
BBB
    AAA

在这种情况下,我们在Java中是否有一个等效的方法,而不使用任何外部或第三方库?

(C中的
ncurses
库的Java端口)是一种可能性

这样做的能力是终端的属性,而不是语言。因此,原则上,如果您连接到一个功能足够强大的终端模拟器,那么是的,当然是可能的

像ncurses这样的库的目的是抽象出依赖于终端的光标移动等的血淋淋的细节。您不需要像ncurses这样的东西,您总是可以直接为您的目标终端发出适当的代码


“Java中是否有一个等价的方法”是指是否有库也可以为您提供终端不可知抽象?是(参见其他回答)。但是没有什么能让JVM的每个主机系统都提供VT100仿真器。例如,祝你在Windows上好运。从这个意义上讲,Java中的2D图形比终端环境更通用

请参阅可能的副本,您至少可以提及用于移动光标的实际答案代码。不是每个人都在做需要大图书馆的大型程序。使用Windows控制台API,而不是VT100转义序列。