import javax.swing.JOptionPane;
public class Insurance {
final static String INPUT_GENDER = "Please enter your gender: (Male or Female)";
final static String MALE = "male";
final static String FEMALE = "female";
static String gender;
public static void main(String args[])
{
do
{
gender = JOptionPane.showInputDialog(INPUT_GENDER).toLowerCase();
System.out.println(gender);
}
while(!gender.equals(MALE) && !gender.equals(FEMALE));
}
}
上面的代码是修订任务的开始,但我遇到了一些我不理解的东西。要求用户输入他们的性别,如“男性”或“女性”,并且只有在输入满足其中一个输入时,程序才会继续。这是通过将输入与MALE和FEMALE的最终字符串进行比较来完成的。
我不明白为什么它只适用于&&在while语句中。我希望它需要||,因为如果输入匹配两个性别字符串中的任何一个,我们希望它继续。我明白了&&应该只允许代码在两个参数都为真时继续。
TL; DR
while(!gender.equals(MALE) && !gender.equals(FEMALE)); //This works
while(!gender.equals(MALE) || !gender.equals(FEMALE)); //This does not work
while(gender.equals(MALE) || gender.equals(FEMALE)); //This does not work
答案 0 :(得分:8)
&&
是一个合乎逻辑的and
运算符
||
是逻辑or
运算符
使用De Morgan,以下内容:
while(!gender.equals(MALE) && !gender.equals(FEMALE))
可以翻译成:
while(!(gender.equals(MALE) || gender.equals(FEMALE)))
(请注意其他括号以及!
之前的位置)。
上述两项均表示gender
既不是MALE
也不是FEMALE
。
您的其他代码:
while(!gender.equals(MALE) || !gender.equals(FEMALE))
上述方法 - gender
不是MALE
或 gender
不是FEMALE
。
while(gender.equals(MALE) || gender.equals(FEMALE));
同样,上述方法 - gender
为MALE
或 gender
为FEMALE
。
答案 1 :(得分:0)
英文:“不是女性或男性,再做一次”
然后在Java do{...}while(!(FEMALE || MALE));
和!(A || B)等于!A&& !乙
答案 2 :(得分:0)
&&
是Java的逻辑 AND 运算符
||
是Java的逻辑 OR 运算符
例如:
boolean a = true;
boolean b = false;
boolean c = a && b; // c is false
boolean d = a || c; // d is true
此外,!
是Java的逻辑NOT
运算符。它用于否定布尔表达式:
boolean p = true;
boolean q = !p; // q is false
值得注意的是,x && y
会产生与!(!x || !y)
相同的逻辑值。
同样,x || y
可以重写为!(!x && !y)
答案 3 :(得分:0)
如果您输入的性别既不是do-while
也不是MALE
,则在FEMALE
循环中,您需要提示用户重新输入他/她的性别。
所以while条件是,如果 gender.equals(MALE)
和gender.equals(FEMALE)
返回false 然后,您将重新提示用户,即循环将迭代。
这意味着如果gender.equals(MALE)
的不且gender.equals(FEMALE)
的不 为真,那么您的循环应该迭代
因此,
while(!(gender.equals(MALE)) && !(gender.equals(FEMALE)))