&&和和||在java中

时间:2012-06-10 10:56:20

标签: java

    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

4 个答案:

答案 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));

同样,上述方法 - genderMALE genderFEMALE

答案 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)))