在该页面中,用户必须在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循环是如何工作的,但不知道在这种情况下会是什么样子。请帮助
现在我也必须对文本字段做同样的处理,使用你们回答的同样方法是行不通的。有什么建议吗?
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()
的返回值
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");
}
无需循环^_^
一般策略如下:
bool flag = true;
do{
//search for input
if (/*the input is valid*/)
flag = false;
}while (flag);
但是,如果你硬编码了这么多选项,你可能会有错误的设计。试试Jerome C.建议的类似单选按钮的东西。
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.
}
这里有几点需要注意。
- 避免使用像
Error
这样的类名,因为它们通常用于真正的java.lang.Error
逻辑 - 如果您有布尔值,则不需要使用
==
运算符
不确定为什么需要while循环。如果您认为用户必须"保持循环",而您的条件(所有5个问题都已回答(不满足,那么就没有必要了。事件调度线程(EDT(将继续为您运行"循环"。
另一方面,如果您正在寻找一种紧凑的方法来验证所有复选框,您可以从(假设(javax.swing.JCheckbox box1a更改它们的声明方式;等等转换为固定数组或ArrayList,然后可以使用for循环对其进行迭代。