Строка НЕ равна (строка1 ИЛИ строка 2 ИЛИ строка 3) в java

Вопрос: Как проверить, не соответствует ли строка string1 OR string2 ИЛИ string3? Я пытался использовать ||, но это не работает: if (!answer1.equals("s1" || "s2" || "s3")){ System.out.println("..."); } Лучший ответ: Самое простое - это "нормальный" способ: if (!(answer1.equals("s1") || answer1.equals("s2") || answer1.equals("s3"))) { } Некоторые альтернативные подходы включают строковый переключатель на JDK7+: switch (answer1) {

Вопрос:

Как проверить, не соответствует ли строка string1 OR string2 ИЛИ string3? Я пытался использовать ||, но это не работает:

if (!answer1.equals(«s1» || «s2» || «s3»)){ System.out.println(«…»); } Лучший ответ:

Самое простое – это “нормальный” способ:

if (!(answer1.equals(«s1») || answer1.equals(«s2») || answer1.equals(«s3»))) { }

Некоторые альтернативные подходы включают строковый переключатель на JDK7+:

switch (answer1) { case «s1»: case «s2»: case «s3»: break; default: // whatever }

…или:

if (!Arrays.asList(«s1», «s2», «s3»).contains(answer1)) { } Ответ №1

Предварительно создайте Set<String> содержащий «s1», «s2» т.д., А затем используйте !set.contains(answer1).

Ответ №2

Вы не хотите, чтобы answer1 был «s1», «s2» или «s3», поэтому вам нужно и сравнения:

if (!answer1.equals(«s1») && !answer1.equals(«s2») && !answer1.equals(«s13»)) { System.out.println(«…»); }

Вы также можете попробовать

List<String> strings = Arrays.asList(«s1», «s2», «s3»); if (!strings.contains(answer1)) { System.out.println(«…»); } Ответ №3if ( !( «s1».equals(answer1) || «s2».equals(answer1) || «s3».equals(answer1))) { // … whatever } Ответ №4

Как написано, вы пытаетесь сделать OR на двух строках. Например, позвольте мне задать вам вопрос: “s1” или “s2”? Ответ: Кто знает? В чем вопрос, о котором даже говорят? Позвольте мне попробовать еще раз: равна ли это “s1”? (Нет). Он равен “s2”? (Нет). Он равен “s3”? (Да.) И т.д. Таким образом:

if(!(answer1.equals(«s1») || answer1.equals(«s2») || answer.equals(«s3»)) ) { … }

Попытка сделать OR на строках просто недействительна; вы должны сделать это в той или иной форме.

Ответ №5

Вот простая альтернатива:

if (!»s1,s2,s3″.contains(answer1))

Предполагает, что ваш ответ не содержит запятой, и даже тогда ему нужно будет иметь кромку, чтобы дать ложный результат.

Оцените статью
Добавить комментарий