如何在java中从终端中删除字母并用新字母替换?

问题描述 投票:0回答:1

所以我正在尝试制作一款西蒙说游戏,用户必须重复控制台所显示的内容。因此,到目前为止,对我来说,我已经使其工作正常,以便向用户展示字符,并且每个字符都存储在 StringBuilder 中。我想修改此代码,以便每个字符仅显示一定的时间(可能是 0.6 秒或 1 秒等),然后删除并在 for 循环期间显示下一个字符等。我知道 Thread.sleep 用于计时部分,只是退格/删除部分我不知道如何解决。

这是我被困住并难以继续前进的代码,我不知道要在 for 循环的末尾添加什么。

public static void gameStart() {
    repeat.level++;//originally set to 0, now increments each time
    StringBuilder sb = new StringBuilder();
    sb.ensureCapacity(100);// plan to have 100 levels
    for (int i = 0; i < repeat.level;i++) {
        Random rnd = new Random();
        char c = (char) ('a' + rnd.nextInt(26));//determines random char
        System.out.println(c);//shows char to user
        sb.append(c);//add to sb
        }
    System.out.println(sb);//just to make sure each char is getting added to sb
java for-loop stringbuilder thread-sleep
1个回答
0
投票

实际上,你无法从控制台中删除角色,但你可以玩个把戏。 您可以在 for 循环中尝试这种方式:

for (int i = 0; i < repeat.level; i++) {
            Random rnd = new Random();
            char c = (char) ('a' + rnd.nextInt(26)); // determines random char
            System.out.print(c); // print character to the console

            // Sleep to display the character for a certain amount of time
            try {
                Thread.sleep(1000); // millis
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt(); // Restore interrupted status
            }
            // Overwrite the character displayed with spaces to achieve "remove" it
            System.out.print("\b \b"); // Print backspace and space to clear the character
            sb.append(c);
        }
© www.soinside.com 2019 - 2024. All rights reserved.