2014-12-04 78 views
1

我做一個簡單的程序來問你,如果你想比薩餅:如何不使if語句「聯繫起來」與else語句

#include <iostream> 

    using namespace std; 

    int main() 
{ 
    char answer; 
    cout << "Yes or no, would you like some pizza?: "; 
    cin >> answer; 
    cout << endl; 
    if ((answer == 'n') || (answer == 'N')) { 
     cout << "Have some anyway."; 
    } 
    if ((answer == 'y') || (answer == 'Y')) { 
     cout << "Okay, here's your pizza!"; 
    } 
    else { 
    cout << "Huh? Give me a proper answer."; 
    } 
    cout << endl << endl; 
    return 0; 
} 

如果你鍵入「是」或任何與開始Y返回「這是你的披薩」。問題是如果你輸入任何以n開頭的東西,它會說「有一些東西」,「呃?給我一個正確的答案」。

我試圖用另一種「如果」是去

if ((answer != 'n') || (answer !='N')) { 
    cout << "Give me a proper answer"; 
} 

,做,對於在if語句每個字母,但同樣的問題時...幫助更換else語句?

+2

'if(a){A} else if(b){B} else if(c){C} else {D}' – Angew 2014-12-04 09:55:20

回答

4

是你在找什麼?

#include <iostream> 

using namespace std; 

int main() 
{ 
    char answer; 
    cout << "Yes or no, would you like some pizza?: "; 
    cin >> answer; 
    cout << endl; 
    if ((answer == 'n') || (answer == 'N')) { 
     cout << "Have some anyway."; 
    } 
    else if ((answer == 'y') || (answer == 'Y')) { 
     cout << "Okay, here's your pizza!"; 
    } 
    else { 
     cout << "Huh? Give me a proper answer."; 
    } 
    cout << endl << endl; 
    return 0; 
} 

之前發生了什麼事,是下面的代碼被執行,即使((answer == 'n') || (answer == 'N'))是真的:

if ((answer == 'y') || (answer == 'Y')) { 
    cout << "Okay, here's your pizza!"; 
} 
else { 
cout << "Huh? Give me a proper answer."; 
} 

...這就是爲什麼我們不得不寫else if代替if,因此,上述代碼僅在((answer == 'n') || (answer == 'N'))爲假時執行。

+0

工作,謝謝! – Westi 2014-12-04 09:58:17

+0

這個答案沒有解釋什麼是錯的,它是如何修復的。 – anatolyg 2014-12-04 10:07:35

+0

@anatolyg:固定,謝謝你的推薦! – 2014-12-04 16:08:59

2

使用else if,而不是第二if

if ((answer == 'n') || (answer == 'N')) { 
    cout << "Have some anyway."; 
} 
else if ((answer == 'y') || (answer == 'Y')) { 
    cout << "Okay, here's your pizza!"; 
} 
else { 
cout << "Huh? Give me a proper answer."; 
} 
1
if (condition == true) {/*do this*/} 
else if (other_condition == true) {/*do that*/} //repeat as much as you like 
else {/*do other stuff*/} 

或者使用switch語句:

switch(answer) { 
case 'y': case 'Y': /*do this*/ break; 
case 'n': case 'N': /*do that*/ break; 
/*do other stuff*/ 
} 
1

嘗試使用否則,如果在第二個if語句......像

else if ((answer == 'y') || (answer == 'Y')) { 
     cout << "Okay, here's your pizza!"; 
    } 

其他一切都很好