由于某些原因,当我有多个正确的字符串时,该语句不断重复

    do {
    System.out.println("Enter Service Code");
    Scanner a = new Scanner(System.in);
    serviceCode = a.nextLine();
} while (!serviceCode.equals("ORB1") || !serviceCode.equals("ORBH") ||
         !serviceCode.equals("ISS5") || !serviceCode.equals("ILLOYDS") ||
         !serviceCode.equals("DLAB") || !serviceCode.equals("LEOM7") ||
         !serviceCode.equals("MOON2"));


但是,当只有一个字符串要检查代码时。 do while语句可以正常工作,并且在输入正确的输入后将停止循环

    do {
    System.out.println("Enter Service Code");
    Scanner a = new Scanner(System.in);
    serviceCode = a.nextLine();
} while (!serviceCode.equals("ORB1"));

最佳答案

如果输入“ ORB1”,则“!serviceCode.equals(” ORB1“)”将返回false,而其他将返回true;否则,将返回true。并且您正在使用“ OR”运算符。所以,这句话:

!serviceCode.equals("ORB1") || !serviceCode.equals("ORBH") ||
     !serviceCode.equals("ISS5") || !serviceCode.equals("ILLOYDS") ||
     !serviceCode.equals("DLAB") || !serviceCode.equals("LEOM7") ||
     !serviceCode.equals("MOON2")


永远是真的。您需要使用“ AND”运算符

!serviceCode.equals("ORB1") && !serviceCode.equals("ORBH") &&
     !serviceCode.equals("ISS5") && !serviceCode.equals("ILLOYDS") &&
     !serviceCode.equals("DLAB") && !serviceCode.equals("LEOM7") &&
     !serviceCode.equals("MOON2")

09-05 12:37
查看更多