gpt4 book ai didi

java - 在 Java 控制台中退格?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:44 24 4
gpt4 key购买 nike

有没有一种方法可以退格并删除用户输入的一些字母/单词?

我正在创建一个单词打乱游戏,在将其制作为 GUI 之前,我正在做一些控制台相关的事情。因为我在第一个玩家输入单词时使用扫描仪,所以它会停留在那里。所以第二位玩家在猜乱码的时候可以只看一眼。
无论如何要从控制台中删除该词?或者让它显示为 * * * *?
我宁愿没有 System.out.println("\n\n\n....");
这将使输入出现在底部,我希望它出现在顶部。我可以删除用户输入的内容或使其显示为 * * * * * * 吗?
谢谢。 :)

最佳答案

请注意,在 GUI 中执行此操作实际上比使用 Scanner IMOP 执行此操作要容易得多。

使用 Scanner 的一种方法是有一个线程在输入字符时删除字符并用 * 替换它们

EraserThread.java

import java.io.*;

class EraserThread implements Runnable {
private boolean stop;

/**
*@param The prompt displayed to the user
*/
public EraserThread(String prompt) {
System.out.print(prompt);
}

/**
* Begin masking...display asterisks (*)
*/
public void run () {
stop = true;
while (stop) {
System.out.print("\010*");
try {
Thread.currentThread().sleep(1);
} catch(InterruptedException ie) {
ie.printStackTrace();
}
}
}

/**
* Instruct the thread to stop masking
*/
public void stopMasking() {
this.stop = false;
}
}

密码字段.java

public class PasswordField {

/**
*@param prompt The prompt to display to the user
*@return The password as entered by the user
*/
public static String readPassword (String prompt) {
EraserThread et = new EraserThread(prompt);
Thread mask = new Thread(et);
mask.start();

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String password = "";

try {
password = in.readLine();
} catch (IOException ioe) {
ioe.printStackTrace();
}
// stop masking
et.stopMasking();
// return the password entered by the user
return password;
}
}

主要方法

class TestApp {
public static void main(String argv[]) {
String password = PasswordField.readPassword("Enter password: ");
System.out.println("The password entered is: "+password);
}
}

我已经对其进行了测试并且正在为我工​​作。

更多信息:

关于java - 在 Java 控制台中退格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11678204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com