循环使用时未知

时间:2011-08-09 17:22:49

标签: java netbeans netbeans-6.9

此页面用户必须在2个复选框之一中选择5次。所以我写了这个:

        if (box1a.isSelected() == true || box1b.isSelected() == true) {
            if (box2a.isSelected() == true || box2b.isSelected() == true) {
                if (box3a.isSelected() == true || box3b.isSelected() == true) {
                    if (box4a.isSelected() == true || box4b.isSelected() == true) {
                        if (box5a.isSelected() == true || box5b.isSelected() == true) {


                                 with some other things he does when it is true.


        } else {
            new Error("You must select an answer at all the questions");
        }

然后,如果您没有选中其中一个顶部复选框,他只会返回错误。然后我很清楚我需要一个while循环,但我不知道如何做到这一点。我知道while循环是如何工作的,但不知道在这种情况下它会如何。请帮忙

此外,我现在必须对文本字段执行相同的操作并使用我得到的答案的相同方法,你们不起作用。任何建议?

6 个答案:

答案 0 :(得分:1)

if ((box1a.isSelected() == true || box1b.isSelected() == true) &&
   (box2a.isSelected() == true || box2b.isSelected() == true) &&
   (box3a.isSelected() == true || box3b.isSelected() == true) &&
   (box4a.isSelected() == true || box4b.isSelected() == true) &&
   (box5a.isSelected() == true || box5b.isSelected() == true)) {
      //DO SOMETHING IF TRUE
}
else {
      new Error("You must select an answer at all the questions");
}

不需要循环^ _ ^

答案 1 :(得分:1)

if ((box1a.isSelected() || box1b.isSelected()) &&
   (box2a.isSelected() || box2b.isSelected())  &&
   (box3a.isSelected() || box3b.isSelected())  &&
   (box4a.isSelected() || box4b.isSelected())  &&
   (box5a.isSelected() || box5b.isSelected())) 
   {
      //true stuff
   }
   else 
   {
       new Error("You must select an answer at all the questions");
   }

永远不应该用==来测试true。风格很差,最好只使用isSelected()

的返回值

答案 2 :(得分:0)

在这种情况下,为什么不使用单选按钮(选中默认单选按钮)?

答案 3 :(得分:0)

一般策略是这样的:

bool flag = true;
do{
    //search for input
    if (/*the input is valid*/)
        flag = false;
}while (flag);

但如果你硬编码这么多选项,你可能会有错误的设计。尝试类似Jerome C.建议的单选按钮。

答案 4 :(得分:0)

if(!box1a.isSelected() && !box1b.isSelected()) {
    // You must select an answer at all the questions
}
else if (box1a.isSelected() && box1b.isSelected() && box2a.isSelected() && box2b.isSelected() && box3a.isSelected() && box3b.isSelected() && box4a.isSelected() && box4b.isSelected() && box5a.isSelected() && box5b.isSelected()) {
    // with some other things he does when it is true.
}

这里需要注意几点。

  1. 避免使用类似Error的类名,因为它们通常用于真正的java.lang.Error逻辑。
  2. 如果您有布尔值,则无需使用==运算符。

答案 5 :(得分:0)

不确定为什么要进行while循环。如果您认为用户必须“保持在循环中”而您的条件(所有5个问题都已回答)未得到满足,那么就没有必要了。事件调度线程(EDT)将继续为您运行“循环”。

另一方面,如果您正在寻找一种简洁的方法来验证所有复选框,您可以更改它们的声明方式(假设)javax.swing.JCheckbox box1a;等等,以固定数组或ArrayList,然后您可以使用for循环迭代。