我目前正在测试各种获取用户输入的方法。今天我正在使用OnClosing()进行测试,这似乎有效。我的问题是,如果我不在while()循环中放任何东西,它就不起作用。它更容易用代码显示:
public MyClass() {
String myPassword= new Password().getpw();
}
确定。这就是我获取字符串的方式。
public class Password {
private boolean goon = true;
private JPasswordField jpassword = new JPasswordField ();
public Password() {
JFrame f = new JFrame("Type your password here, get it by closing the frame");
f.getContentPane().add(jpassword);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
goon = false;
}
}
);
f.setSize(400,65);
f.show();
}
public String getpw() {
while (goon);
return new String(jpassword.getPassword());
}
}
除非我在while()循环中放置一些随机内容,否则这不起作用..让我告诉你。通过这种方式工作
public String getpw() {
while (goon) {
System.out.println("");
}
return new String(jpassword.getPassword());
}
为什么不使用空循环?
答案 0 :(得分:0)
经过大量搜索,我找到了答案。 发生这种情况是因为循环中的代码“无法访问”,因为循环没有任何循环(仅使用处理器能力)。
我的循环可以用这样的方式说明:
public String getpw() {
while (goon) {
doNothing();
}
return new String(jpassword.getPassword());
}
private void doNothing() { }
这是一种做循环的可怕方式,但如果你绝对需要做循环。确保循环实际做某事。
这仍然是一种可怕的做法,但我会举个例子:
public String getpw() {
String s = "";
while (goon) {
s += "";
}
return new String(jpassword.getPassword());
}
现在循环实际上做了一些事情,但不建议这样做。我会使用另一种方法