我写了这段代码来使用if-else语句但是" no"输出与yes相同,我首先尝试在本地声明yes和no变量,并修复了我得到的第一个错误。但现在他们无法区分输出。无论输入是什么,是和否的条件。
以下是代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string name;
bool answer;
cout<<"Welcome user 'Divine 9'..."<<"What is your name?"<<endl;
getline(cin, name);
cout<<endl<<"Hello "<<name<<", my name is Xavier."<<endl<<" I am going to ask you some questions about yourself. Fear not, i will not take any of your information back to the boss man, or store it."<<endl;
cout<<"Is this okay with you? (yes/no)"<<endl;
cin>>answer;
{
bool yes;
bool no;
if(answer==yes)
cout<<"Great, will proceed with the questions!"<<endl;
else (answer==no)
cout<<"That is okay.";
}
return 0;
}
所以,如果我输入yes,它将输出:
&#34;很好,将继续提问。&#34;
没关系。
如果我输入no,它将输出相同的内容。 有人可以帮我解决这个问题吗?我以为我有它,但我想我不是
答案 0 :(得分:2)
我在这里看到两个不同的问题:第一个是你用字符串比较一个布尔值,第二个问题是你没有初始化你的布尔变量。
我建议你改变if(answer=="yes")
中的if语句
if(answer=="no")
但我不明白你是否正在尝试这样做。
编辑:阅读评论我弄清楚OP意味着什么。当然answer
应该是std::string
类型。
答案 1 :(得分:1)
你没有在else
之后提出条件。你只需要声明或阻止 - 条件就是前一个if
失败了。所以它应该是:
if (answer == yes) {
cout<<"Great, will proceed with the questions!"<<endl;
} else {
cout<<"That is okay, still love the Gamma Sig ladies, especially that_girl_teejay :-)";
}
如果您想测试其他条件,请使用else if (condition)
。
另一个问题:您从未初始化yes
和no
。它应该是:
bool yes = true;
bool no = false;
但这些都没用。你不需要将布尔值与任何东西进行比较,你可以直接在条件中使用它们:
if (answer) {
cout<<"Great, will proceed with the questions!"<<endl;
} else {
cout<<"That is okay, still love the Gamma Sig ladies, especially that_girl_teejay :-)";
}
请注意,当您使用bool
输入cin >> answer
时,您无法输入yes
或no
。 bool
仅允许输入1
(适用于true
)和0
(适用于false
)。如果你想允许单词作为答案,你应该输入一个字符串并与字符串进行比较。它应该是:
string answer;
...
const string yes = "yes";
const string no = "no";
if (answer == yes) {
cout<<"Great, will proceed with the questions!"<<endl;
} else if (answer == no) {
cout<<"That is okay."<<endl;
} else {
count<<"Please enter yes or no."<<endl;
}