Java不等于字符串语法不起作用

Java不等于字符串语法不起作用,java,string,comparison,Java,String,Comparison,这段代码不会在多个OR(即| |)上执行if语句,我不知道为什么,有人能帮忙吗?Java新手 if (!"A123".equals(itemNumber) || !"A55".equals(itemNumber) || !"B750".equals(itemNumber) || !"C650".equals(itemNumber)) { System.out.print("\nInvalid

这段代码不会在多个OR(即| |)上执行if语句,我不知道为什么,有人能帮忙吗?Java新手

    if (!"A123".equals(itemNumber) || !"A55".equals(itemNumber) || !"B750".equals(itemNumber) 
                                   || !"C650".equals(itemNumber))
    {
        System.out.print("\nInvalid Item. Try again. ");
        System.out.print("\nEnter an item number or END to exit: ");
        itemNumber = keyboard.nextLine();
    }
    System.out.printf("\nThank you. %s", itemNumber);

您可能希望使用“AND”操作而不是“OR”:

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber) && !"C650".equals(itemNumber))
{
        System.out.print("\nInvalid Item. Try again. ");
        System.out.print("\nEnter an item number or END to exit: ");
        itemNumber = keyboard.nextLine();
}

System.out.printf("\nThank you. %s", itemNumber);
翻译成“如果
itemname
不等于A123,
itemname
不等于A55,
itemname
不等于B750,
itemname
不等于C650”

更好的方法是使用
switch
语句:

switch(itemNumber)
{
  //fall through all acceptable case
  case "A123":
  case "A55":
  case "B750":
  case "C650":
    System.out.printf("\nThank you. %s", itemNumber);
  break;

  // no acceptable match found
  default:
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
   break;
}

您可能希望使用“AND”操作而不是“OR”:

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber) && !"C650".equals(itemNumber))
{
        System.out.print("\nInvalid Item. Try again. ");
        System.out.print("\nEnter an item number or END to exit: ");
        itemNumber = keyboard.nextLine();
}

System.out.printf("\nThank you. %s", itemNumber);
翻译成“如果
itemname
不等于A123,
itemname
不等于A55,
itemname
不等于B750,
itemname
不等于C650”

更好的方法是使用
switch
语句:

switch(itemNumber)
{
  //fall through all acceptable case
  case "A123":
  case "A55":
  case "B750":
  case "C650":
    System.out.printf("\nThank you. %s", itemNumber);
  break;

  // no acceptable match found
  default:
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
   break;
}

您的错误是使用了或'操作。您应该对其使用和“操作。。另外,如果您使用Arrays.asList和contains()方法来解决这个问题,我认为这是一个简单的方法

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber)  && !"C650".equals(itemNumber))
{

    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}

    System.out.printf("\nThank you. %s", itemNumber);

您的错误是使用了或'操作。您应该对其使用和“操作。。另外,如果您使用Arrays.asList和contains()方法来解决这个问题,我认为这是一个简单的方法

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber)  && !"C650".equals(itemNumber))
{

    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}

    System.out.printf("\nThank you. %s", itemNumber);

在代码中,您询问“如果项目编号不等于“A123”或“A55”或“B750”或“C650”,则执行这些操作”。因此,当您输入“A55”时,程序会检查“A55”是否不等于“A123”或“A55”。。。。哦,它不等于“A123”,所以这个条件是真的

如果你这样改变你的要求。“如果项目编号不等于“A123”和“A55”以及“B750”和“C650”,则执行这些操作”。所以,当您输入“A55”时,程序会检查“A55”是否不等于“A123”和“A55”。。。哦,它不是“不等于”A55,所以这个条件是假的。例如

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber) && !"C650".equals(itemNumber))
{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}
System.out.printf("\nThank you. %s", itemNumber);
if ("A123".equals(itemNumber) || "A55".equals(itemNumber) || "B750".equals(itemNumber) || "C650".equals(itemNumber))
{
    System.out.printf("\nThank you. %s", itemNumber);
}
else{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}
或者你可以把你的要求改成这样, “如果项目编号等于“A123”或“A55”或“B750”或“C650”,则打印“谢谢”,然后执行这些操作。”这将是正确的。例如

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber) && !"C650".equals(itemNumber))
{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}
System.out.printf("\nThank you. %s", itemNumber);
if ("A123".equals(itemNumber) || "A55".equals(itemNumber) || "B750".equals(itemNumber) || "C650".equals(itemNumber))
{
    System.out.printf("\nThank you. %s", itemNumber);
}
else{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}

在代码中,您询问“如果项目编号不等于“A123”或“A55”或“B750”或“C650”,则执行这些操作”。因此,当您输入“A55”时,程序会检查“A55”是否不等于“A123”或“A55”。。。。哦,它不等于“A123”,所以这个条件是真的

如果你这样改变你的要求。“如果项目编号不等于“A123”和“A55”以及“B750”和“C650”,则执行这些操作”。所以,当您输入“A55”时,程序会检查“A55”是否不等于“A123”和“A55”。。。哦,它不是“不等于”A55,所以这个条件是假的。例如

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber) && !"C650".equals(itemNumber))
{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}
System.out.printf("\nThank you. %s", itemNumber);
if ("A123".equals(itemNumber) || "A55".equals(itemNumber) || "B750".equals(itemNumber) || "C650".equals(itemNumber))
{
    System.out.printf("\nThank you. %s", itemNumber);
}
else{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}
或者你可以把你的要求改成这样, “如果项目编号等于“A123”或“A55”或“B750”或“C650”,则打印“谢谢”,然后执行这些操作。”这将是正确的。例如

if (!"A123".equals(itemNumber) && !"A55".equals(itemNumber) && !"B750".equals(itemNumber) && !"C650".equals(itemNumber))
{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}
System.out.printf("\nThank you. %s", itemNumber);
if ("A123".equals(itemNumber) || "A55".equals(itemNumber) || "B750".equals(itemNumber) || "C650".equals(itemNumber))
{
    System.out.printf("\nThank you. %s", itemNumber);
}
else{
    System.out.print("\nInvalid Item. Try again. ");
    System.out.print("\nEnter an item number or END to exit: ");
    itemNumber = keyboard.nextLine();
}

尝试将
|
更改为
&&
甚至可能希望使用
来减少if语句!Arrays.asList(“A123”、“A55”、…).contains(itemNumber)
尝试将
|
更改为
&
甚至可能希望使用
来减少if语句!Arrays.asList(“A123”、“A55”和…)。包含(itemNumber)
Yep、
switch
Arrays。asList
非常干净,谢谢大家,但这个问题要求我不要使用数组。讲师希望使用while循环,在“项目编号”上测试用户输入验证,并输出一个总数……无论我是键入A123还是A555(或任何其他非项目输入),if语句都会一直推到“谢谢”语句……当我使用&&时,II的情况更糟。我会试试switchYep、
switch
数组。asList
非常干净,但这个问题要求我不要使用数组。讲师希望使用while循环,在“项目编号”上测试用户输入验证,并输出一个总数……无论我是键入A123还是A555(或任何其他非项目输入),if语句都会一直推到“谢谢”语句……当我使用&&时,II的情况更糟。我试试这个开关。这是一个很好的解释。这是一个很好的解释