2014-12-04 80 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!"; 
    } 

其他一切都很好