【问题标题】:Java how to clear a line in the consoleJava如何清除控制台中的一行
【发布时间】:2021-03-15 06:15:10
【问题描述】:

所以我只是在做一个随机程序,它创建一个充满字符的二维数组并将它们打印出来。我要做的是打印出二维数组的行和列,并让用户输入他们想要在数组中设置索引的字符。但我希望程序看起来干净,所以我没有 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");
        }   
    }   
}

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

我已经看到了很多不同的答案,所以我只会说我使用的是 Windows 10 和 Visual Studio Code(但我已经从 windows cmd 尝试过)。那么有没有人有一个解决方案可以让我只替换那一行输出?

你们的工作没有白费

【问题讨论】:

  • “回车”不是垂直回车,而是水平回车到第一列。
  • 是的,我承认我只是几个小时前才知道回车是什么,所以我必须了解更多关于它们的信息。

标签: java command-line command-line-interface user-input


【解决方案1】:

试试这个。

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("\033[1F\33[K");
        System.out.flush();
    }
}
System.out.println(Arrays.deepToString(art));

【讨论】:

  • 是的,这是完美的,刚刚测试过,谢谢。我认为下面的解决方案是相似的,但转义字符的种类略有不同。
【解决方案2】:

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

public static void clearScreen() {  
    System.out.print("\033[H\033[2J");  
    System.out.flush();  
}

【讨论】:

  • 谢谢,这是迄今为止我找到的最好的解决方案,但我只想清除那条线,但现在应该可以了。并感谢您的快速响应
  • 如果这符合您的目的,您可以将其标记为正确。
  • 上面的帖子更适合这个,但我仍然很感激
猜你喜欢
  • 1970-01-01
  • 2012-05-01
  • 2010-10-11
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多