我想把密码替换成*******这符号,但我不知怎么去实现-----------------大家请进
import java.util.*;public class Accp9_3 {
public static void main(String[] args) {
System.out.println("--欢迎进入学员注册系统--");
Scanner input=new Scanner(System.in);
System.out.print("请输入您的账号:");
String zhanghao=input.next();
System.out.print("请输入您的密码:");
String possword1=input.next();
System.out.print("请确认您的密码:");
String possword2=input.next();
if (possword1.equals(possword2)){
String mima=possword1=possword2;
System.out.println("恭喜您,注册成功!!!");
System.out.println("您的账号是: "+zhanghao + "您的密码是: "+mima+"\n请记好的您的账号和密码,以防遗忘!!! ");
}else{
System.out.println("密码不一致,请重新注册!!!");
}
}
}
----------------解决方案--------------------------------------------------------
回复 楼主 gameohyes
你的是在cmd上运行的 好像不知道怎么弄 我以为是gui呢
----------------解决方案--------------------------------------------------------
我在Myeclipse里运行的。有法不??
----------------解决方案--------------------------------------------------------
楼主误解了,2楼说的GUI不是IDE
你要实现这个功能和在什么IDE下开发没关系,和程序有关
如果是在GUI下的我倒还可以
在CMD下的就等高手来解答吧,我也趁机看看
----------------解决方案--------------------------------------------------------
哦哦。呵,一起等高手来吧。一起学习
----------------解决方案--------------------------------------------------------
import java.util.*;
public class Accp9_3 {
public static void main(String[] args) {
System.out.println("--欢迎进入学员注册系统--");
Scanner input=new Scanner(System.in);
System.out.print("请输入您的账号:");
String zhanghao=input.next();
EraserThread eraserThread = new EraserThread(); //启动线程
eraserThread.start();
System.out.print("请输入您的密码:");
String possword1=input.next();
System.out.print("请确认您的密码:");
String possword2=input.next();
eraserThread.setActive(false); //结束线程
if (possword1.equals(possword2)){
String mima=possword1=possword2;
System.out.println("恭喜您,注册成功!!!");
System.out.println("您的账号是: "+zhanghao + "您的密码是: "+mima+"\n请记好的您的账号和密码,以防遗忘!!! ");
}else{
System.out.println("密码不一致,请重新注册!!!");
}
}
}
class EraserThread extends Thread {
private boolean active;
private String mask;
public EraserThread() {
this('*');
}
public EraserThread(char maskChar) {
active = true;
mask = "\010" + maskChar;
}
public void setActive(boolean active) {
this.active = active;
}
public boolean isActive() {
return active;
}
public void run() {
while(isActive()) {
System.out.print(mask);
try {
Thread.currentThread().sleep(50);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
----------------解决方案--------------------------------------------------------
以下是引用lampeter123在2009-8-8 20:13的发言:EraserThread eraserThread = new EraserThread(); //启动线程
不怎么看的懂哈,呵呵,我没学过那去。 最后那些更不怎么清楚了。 不过还是感谢你,因为你证明了是可以实现的。 ----------------解决方案--------------------------------------------------------
刚测试了,成死循环了。在输入密码那。请检查
----------------解决方案--------------------------------------------------------
命令行下可以使用Console这个类
图形界面可以使用JPasswordField这个组件
----------------解决方案--------------------------------------------------------
以下是引用gameohyes在2009-8-8 22:22的发言:刚测试了,成死循环了。在输入密码那。请检查
我的测试是通过的, 类EraserThread是用来启动线程来不断循环输出退格+"*',为了掩盖你的password,只要 eraserThread.setActive(false); 就可以结束这个循环, 如果你的程序成死循环,你可能没有用eraserThread.setActive(false); ----------------解决方案--------------------------------------------------------