2013-12-23 3 views
-6

вот мой код. Я хочу, чтобы оператор if работал, если пользователь вводит «Да» или «Да». Когда я вынимаю || и «да» Моя программа работает нормально, и когда пользователь вводит «Да», он работает. Я хотел сделать свою программу лучше, а также иметь ее так, что когда они набирают «да», чтобы работать. Может кто-нибудь помочь мне понять это? Благодаря!Я запутался в том, как делать ИЛИ, пока булевы. "||" это не сработает для меня по какой-то причине

{ 

    cout<<"Would you like to begin?\n"; 


    cin>>answer; 

    if (answer=="Yes" || "yes") { 

     continue_1=true; 

     google=false; 

    } 

    else { 

     if (answer=="No" || "no") { 

      cout <<endl<< "have a nice day\n"; 

      google= false; 

      return 0; 

     } 
+0

Пока никто не собирается упомянуть 'stricmp'? –

+0

также, некоторые 'tolowercase' вещь, а не несколько проверок. – keyser

+2

Ребята, прекратите отправку ответов. Это неловко. – keyser

ответ

4

Вы делаете или на струнах, а не на запросе - вы хотите:

if (answer=="No" || answer=="no") { 

Чтобы быть более общим об этом, хотя вы могли бы преобразовать строку в нижний регистр, а затем сравнить его с «нет», который будет обрабатывать «Нет», «НЕТ» и «Нет» для вас.

Достаточно общий альтернативный подход состоит в том, чтобы просто проверить, что первый символ в строке является либо N, либо n. Это также поднимает такие вещи, как Nope и т.д.

2
if (answer=="Yes" || answer == "yes") 

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

+0

Это не так печально, как о том, как создаются булевы. Я не уверен, что нам будет полезно относиться к этому как к особому делу. – keyser

+0

@ ᴋᴇʏsᴇʀ Я согласен, я был более или менее саркастическим ... Или, как в случае с OP, это было неудачно, потому что это заставило его застрять довольно долго, очевидно :) –

0

Правильный синтаксис:

if (answer=="Yes" || answer=="yes") 

Она не несет ничего с первой стороны, OR и AND-х может быть использована для смешивания различных значений. например:

if (answer=="Yes" || otherAnswer=="no") 
0

я предпочел бы сделать это с меньшим разветвлением:

cout<<"Would you like to begin?\n"; 
cin>>answer; 

if (answer== "No" || answer== "no") 
    return 0; 

if (answer!= "Yes" && answer!= "yes") 
    return error; // only answer with yes or no 

// here, we know that the answer is yes