#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int LordIronhead = 0;
char answer;
cout<<"Is Lord Ironhead present? Y/N.\n";
cin >> answer;
if (answer == 'Y')
{
LordIronhead=0;
}
else if (answer == 'N')
{
LordIronhead= LordIronhead+1;
}
cout<< ""<<LordIronhead<<"\n";
system("PAUSE");
return 0;
}
每次我运行程序并且如果我回答NO(N) 结果总是0而不是1(LordIronhead = LordIronhead + 1)
我可以知道我的错误在哪里吗?
答案 0 :(得分:3)
原则上你的代码很好,但你可能会遇到问题,“回答”的二值逻辑是针对“Y”进行检查而针对“N”进行检查而没有直通案例。我怀疑你正在遇到EOL或案件或角色转换问题,如果是这样的话,那就不会改变主。
要显示问题,请尝试使用else语句:
else if (answer == 'N')
{
LordIronhead= LordIronhead+1;
} else {
std::cout << "Invalid answer '" << answer << "'" << std::endl;
}
答案 1 :(得分:3)
您的代码是正确的,但对用户输入的情况很敏感(它以不同方式处理N
和n
的用户输入。您可以在检查之前将输入转换为已知案例,从而消除可能的用户混淆源。您可以使用toupper或tolower
cin >> answer;
answer = toupper(answer);
答案 2 :(得分:1)
我亲自尝试过,发现如果我回答N,我得到了预期的答案(1)。但是,如果我点击n,它会返回0.您确定要击中N而不是n吗?
答案 3 :(得分:0)
最好使用1和0而不是N和Y.它更容易识别系统