C ++ Executable问题:while循环和If / Else If / Else

时间:2016-01-22 20:22:58

标签: c++

因此,对于机器人技术,编程团队正在学习一种新语言,即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;
}

3 个答案:

答案 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;例如。