【发布时间】:2013-02-20 04:35:14
【问题描述】:
我有一个无限循环,它等待更新布尔值的方法,虽然这在学校似乎一切正常,但在家里却行不通。不确定这是否真的意味着它是基于计算机的还是什么,因为它也适用于那里的 print 语句。
while(running){
//System.out.println(running);
}
...
public static void passwordCheck(String pass){
if(pass.equals(password)){
correctPW = true;
}
else if(pass.equals(overKey))
PWCoder.override(password);
running = false;
}
...
public void actionPerformed(ActionEvent e){
String temp = new String("");
for(int x=0;x<passwordInput.getPassword().length;x++)
temp+=passwordInput.getPassword()[x];
PWCoder.passwordCheck(temp);
}
正如我所说,这段代码适用于未注释的 print 语句,但这相当难看。我要在这里输入一个密码屏幕,如果您输入错误,则会打开一个不同的窗口(代码未显示),或者您可以输入调用覆盖方法的覆盖密码。我使用了许多调试语句,在方法中运行设置为 false,我猜 while 循环只是没有选择它。抱歉,代码有点乱。有问题的while循环,应该让循环结束的方法,以及调用该方法的另一个类中的方法。
【问题讨论】:
-
按照我的看法,您暂时不会更改
runinng的值...所以它无法停止 -
如果您在紧密循环中检查非易失性变量,您可能永远看不到其他线程执行的任何更改。即使变量是易变的,出于性能原因,这也是一个坏主意
-
我的困惑来了,因为这在我学校的计算机上运行良好,但我的家用计算机运行它时出现问题。我确实意识到它可能太快了,但我想不出我可以在循环中放什么来减慢它,但又不会把其他东西弄得一团糟。
-
您是在使用线程还是在等待更改变量。 Anzwaz 的代码没有意义。你应该使用事件而不是 while 来做这样的事情
-
我们最近在学校开始用 swing 和 awt 做 GUI,所以我决定将它应用到我的一个项目中。我有另一个类在创建对象时显示菜单,然后 main 方法进入 while 循环。当密码输入到 PasswordField 并按下提交 JButton 时,显示的事件代码将触发。无论密码是否正确,变量 running 都应设置为 false 并应用下一个操作。