2014-08-27 2 views
-1

В моей программе у меня есть строка, называемая yesOrNo, которая представляет собой ввод с клавиатуры. Я создал оператор if для проверки, если yesOrNo является одним из следующих: «Y», «y», «Yes», ​​ «yes», используя || оператор.Как сделать инструкцию x = y или z в Java

Я получил сообщение об ошибке: Оператор || undefined для типа аргументов java.lang.String, java.lang.String. Каков правильный способ сделать что-то подобное? Благодарю.

Scanner keyboard = new Scanner(System.in); 
    String yesOrNo = keyboard.nextLine(); 
    System.out.println(yesOrNo + "?"); 

    if (yesOrNo.equals("Y" || "y" || "Yes || "yes")){ 

ответ

0

Как это:

if (yesOrNo.equals("Y") || yesOrNo.equals("y") || yesOrNo.equals("Yes") || yesOrNo.equals("yes")){ 
    //... 
} 
1

Try:

if(yesOrNo.equals("Y") || yesOrNo.equals("y") 
    || yesOrNo.equals("Yes") || yesOrNo.equals("yes")) 
8

Кратчайший я могу думать:

if (yesOrNo.equalsIgnoreCase("Y") || yesOrNo.equalsIgnoreCase("Yes")) 
+0

Ах! Мне было интересно, можете ли вы сделать что-то, что могло бы игнорировать капиталы. Спасибо. – Andrew

0
if (yesOrNo.equals("Y") || yesOrNo.equals("y") || yesOrNo.equals("Yes") || yesOrNo.equals("yes")) 
+2

Просьба предоставить более подробное объяснение того, как это работает, а не просто отправлять код. –

6

Ваш синтаксис в действительный. Он должен иметь отдельные пункты:

if(yesOrNo.equals("Y") || yesOrNo.equals("y")...) 

или очиститель если бы вы использовали регулярные выражения:

if(yesOrNo.matches("Y|y|Yes|yes")) { 
    // Code. 
} 

Дополнительное чтение

  • Вы должны смотреть на String Docs. Они детализируют всевозможные полезные вещи.

  • Читайте также: Regex. Это делает сложным сравнение String.

  • Наконец, посмотрите на различные Operators, чтобы увидеть, какие логические утверждения вы можете сформировать, с правильным синтаксисом.

+0

Спасибо. Я рассмотрю эти ссылки. – Andrew

3

два способа:

  1. Использование equals:

    if (yesOrNo.equals("Y") || 
        yesOrNo.equals("y") || 
        yesOrNo.equals("Yes") || 
        yesOrNo.equals("yes")) { 
        //... 
    } 
    
  2. Использование регулярных выражений (shorther, чем при использовании || несколько раз):

    if (yesOrNo.toLowerCase().matches("y|yes")) { 
        //... 
    } 
    
3

В качестве альтернативы вы можете создать список приемлемых ответов и проверить, есть ли ответ в этом списке.

List<String> kindOfYes = Arrays.asList("yes", "y", "okay", "righto"); 
if (kindOfYes.contains(yesOrNo.toLowerCase())) { ... 
0

Как насчет следующего кода?

String yesOrNo = keyboard.nextLine(); 
if (yesOrNo.toLowerCase().charAt(0) == 'y') { 
    // 
} 

ПРИМЕЧАНИЕ: Как вы думаете, есть быстрее путь? Думаю, нет.

+0

'' yNo "' ........ –

+0

Эй @LuiggiMendoza Вы действительно думаете, что пользователь что-то написал? Кстати, приветствия Перу. –

+0

Я ожидаю чего-нибудь от пользователей, см. [Здесь] (https://www.google.com/search?q=programmers+users&es_sm=93&source=lnms&tbm=isch&sa=X&ei=ck_-U9XpN4-4ggTgsoHoAg&ved=0CAgQ_AUoAQ&biw=1517&bih=714&dpr= 0,9). Спасибо за приветствия :), привет мексиканцам. –

0

Ваша программа синтаксис неправ.

Это правильно:

Scanner keyboard = new Scanner(System.in); 
    String yesOrNo = keyboard.nextLine(); 
    System.out.println(yesOrNo + "?"); 

    if(yesOrNo.equals("Y") || yesOrNo.equals("y") || yesOrNo.equals("Yes") || yesOrNo.equals("yes")) { 
Смежные вопросы