Java 如何清除控制台中的一行

Java how to clear a line in the console

所以我只是在做一个随机程序,它创建一个充满字符的二维数组并将它们打印出来。我想要做的是打印出二维数组的行和列,并让用户输入他们想要将数组中的索引设置为什么字符。但我希望程序看起来干净,所以我没有 20 条看起来都相似的不同行。例如:

Row: 0 Col: 0  @

然后我按回车键,它会用这一行替换那一行

Row: 0 Col: 1 *

现在我的代码如下所示:

public static void drawArt(String[][] art) {
    for (int row = 0; row < art.length; row++) {

        for (int col = 0; col < art[row].length; col++) {

            System.out.print("Row: " + (row + 1) + " Col: " + (col+1) + " ");
            art[row][col] = s.nextLine();
            System.out.print("\r\r");
        }   
    }   
}

我的理由是它会打印行和列,在接受用户输入后它会换行,所以我打印了两个“carriage returns”,一个用于输入后的新行, 和一个替换行和列。

我看到了很多不同的答案,所以我只想说我正在使用 Windows 10 和 Visual Studio 代码(但我已经从 windows命令)。那么有没有人有解决方案可以让我只替换那一行输出?

伙计们,你们的工作没有白费

这应该适用于 windows 10 和 vs 代码:

public static void clearScreen() {  
    System.out.print("3[H3[2J");  
    System.out.flush();  
}

试试这个。

Scanner s = new Scanner(System.in);
String[][] art = new String[2][2];
for (int row = 0; row < art.length; row++) {
    for (int col = 0; col < art[row].length; col++) {
        System.out.print("Row: " + (row + 1) + " Col: " + (col+1) + " ");
        art[row][col] = s.nextLine();
        System.out.print("3[1F[K");
        System.out.flush();
    }
}
System.out.println(Arrays.deepToString(art));