Java 跳出for循环
我试着运行下面的代码,但是当选择单选按钮trueButton或falseButton时,它不会中断for循环Java 跳出for循环,java,Java,我试着运行下面的代码,但是当选择单选按钮trueButton或falseButton时,它不会中断for循环 for(;;){ if (trueButton.isSelected() || falseButton.isSelected()){ System.out.print("Selected"); break; } } for(;;){ System.out.println(""); if (trueB
for(;;){
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.print("Selected");
break;
}
}
for(;;){
System.out.println("");
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.print("Selected");
break;
}
}
但是,如果我添加System.out.println(“”);在if语句之前,当选择trueButton或false按钮时,我能够中断for循环
for(;;){
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.print("Selected");
break;
}
}
for(;;){
System.out.println("");
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.print("Selected");
break;
}
}
我是否可以在不在if语句之前添加System.out.println(“”)的情况下跳出循环
如果有人能解释为什么第一个代码不能工作,那就太好了
由于我是编程新手,请原谅我对任何事情一无所知
编辑:我在下面创建了一个类似的场景供大家测试
public static void main(String[] args){
JFrame window = new JFrame("Hello");
JRadioButton trueButton = new JRadioButton("True ");
JRadioButton falseButton = new JRadioButton("False ");
window.setSize(400, 325);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new FlowLayout());
window.add(trueButton);
window.add(falseButton);
trueButton.setVisible(true);
falseButton.setVisible(true);
window.setVisible(true);
for(;;){
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.println("Selected");
break;
}
}
System.out.println("Done");
}
如果我们设法打破循环,则应打印“完成”。尝试以下操作:
for(;;){
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.print("Selected");
return;
}
}
或者这个:
outerloop:
for(;;){
if (trueButton.isSelected() || falseButton.isSelected()){
System.out.print("Selected");
break outerloop;
}
}
否则看起来一切都设置正确。。。
希望这有助于在编写GUI时,您应该避免不惜一切代价阻止循环,因为它会导致应用程序无响应 您应该添加一个ActionListener,以便在单击按钮时“作出反应”。否则,您只需使用
isSelected
方法检查单击哪个按钮,而不使用循环;例如,在提交表单或执行某些计算时
如果您确实需要不断读取按钮的状态,请使用 你为什么不使用while循环呢<代码>while(!trueButton.isSelected()&&&!false button.isSelected()){}System.out.print(“Selected”)另外,如果您使用Swing,这将基本上破坏您的GUI。您确定没有其他区别吗?因为这毫无意义,这种情况应该在按钮上使用监听器,并根据按键来行动。@PaoloForgia是的。这是唯一的区别。我不明白为什么第一个代码也不起作用。为了解开这个谜,我建议发布一个包含单选按钮的帖子。我在尝试代码时遇到了同样的问题。它不起作用。但是,如果在循环之前添加System.out.println(“”)语句,我成功地打破了循环。谢谢你的帮助。让我试着复制你的代码,看看什么是正确的。非常感谢您的帮助。是的,我认为唯一的方法是使用之前建议的while循环。或者可以添加一对额外的括号,将for循环的外部括起来。Idk,祝你好运。谢谢你的时间和努力。你可能想看看评论框中的cricket_007解释,看看他的答案。谢谢。我将尝试改用ActionListener。你知道我的代码不工作的原因吗?很可能是因为你有一个看似无限的循环,它与GUI线程有竞争条件。添加一个print语句会使代码暂停足够长的时间,以使条件能够通过该解释。非常感谢。