因此,对于机器人技术,编程团队正在学习一种新语言,即C ++而不是Objective Robotic C,为了学习该语言,我们正在创建自己的基于文本的角色扮演游戏。我已经开始创建我的并遇到了一个问题。我必须编程要求Y或N,然后检测它是哪一个以继续该游戏。检测系统位于while循环内部,因此如果它获得Y或N以外的答案,它将重新启动循环。然而,当它运行时,它似乎只能检测到N.我为答案而放入的任何其他内容都会触发"是"选项。我猜这是一个非常明显的东西,我想念它。这是代码。
#include <iostream>
#include <string>
using namespace std;
int main() {
int loop1 = 0;
string name;
string cont;
cout << "[WARNING: Incoming Message]\n";
sleep(2);
cout << "[Communication Link Ping]\n";
sleep(2);
cout << "[ERROR: Encrypted]\n";
sleep(2);
cout << "[Please Enter Security Name]\n";
cin >> name;
cout << "[Welcome, " << name << ", Security Level: Maximum]\n"
sleep(2);
while (loop1 == 0) {
cout << "[Proceed? Y/N]\n";
cin >> cont;
if (cont == "N" || cont == "n") {
exit(0);
}
else if (cont == "Y" || "y") {
cout << "[Processing...]\n";
sleep(2);
cout << "[Thank you, " + name + ", message incoming.]\n";
loop1 = 1;
}
else if (cont == "") {
cout << "[Please enter a valid input]\n";
}
else {
cout << "[Processing...]\n";
sleep(2);
cout << "[Unknown Input]\n";
};
}
return 0;
}
答案 0 :(得分:3)
此测试始终为真:
else if(cont == "Y" || "y")
因为"y"
总是求值为非零,因此(cont == "Y" || "y")
总是求值为非零。
你想:
else if(cont == "Y" || cont == "y")
答案 1 :(得分:2)
问题:
text[myName.length + i - 1]
应该是
else if(cont == "Y" || "y")
说明:如果其中一个操作数为true,则OR运算符返回true,显然只是使用文字“y”返回true - 因为它是内存中的地址而不是0。
答案 2 :(得分:0)
如果将输入字符串转换或转换为全部小写或全部大写,则只需要一次比较:
cont[0] = toupper(cont[0]);
if (cont[0] == 'Y')
在互联网上搜索&#34; c ++ string transform lower case&#34;例如。