2016-01-22 52 views
1

因此,对于机器人学,编程团队正在学习一门新的语言C++而不是目标机器人C,为了学习语言,我们正在创建我们的自己的基于文字的角色扮演游戏。我已经开始创建我的并遇到了问题。我必须编程要求Y或N,然后检测它是为了继续进行该游戏。检测系统在while循环内部,这样如果它得到的答案不是Y或N,它将重新启动循环。但是,当它运行它时,它似乎只能检测到N.我为回答所做的任何其他操作都会触发“是”选项。我猜这是我失踪的事情。这是代码。C++可执行文件的问题:while循环和If/Else If/Else

#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

我投票结束这个问题作为题外话,因为它的质量很低,可以到处找到,因此没有来自用户的研究。 – gsamaras

+0

@gsamaras我不同意OP可能忽略了这个问题,再加上OP说他/她是初学者 –

+0

这就是为什么教程存在@GiorgiMoniava,而且,如果你搜索网络,你会发现一大堆类似的问题.... – gsamaras

回答

3

该测试总是对的:

else if(cont == "Y" || "y") 

因为"y"始终计算为非零,因此(cont == "Y" || "y") 始终计算为非零。

你想:

else if(cont == "Y" || cont == "y") 
2

问题:

else if(cont == "Y" || "y") 

应该

else if(cont == "Y" || cont == "y") 

说明:OR如果要是真正的操作数之一,显然简单地使用文字 “Y” 返回true,运算符返回true - 因为它是内存中的地址而不是0.

+0

我相信它应该是:'如果(在toupper(续[0])==“Y”)',但随后,相信在转换成一个壳体所以有较少的相比较。 –

+0

@ThomasMatthews那更好 –

+0

谢谢!!!我讨厌找到我的代码中的小小错误。我让我的团队冲过来,没有人抓住它。我正在让我的队长看穿它,然后我不得不离开。谢谢!有效。 ++ –

0

如果转换或变换输入字符串全部小写或全部大写,你只需要一个比较:

cont[0] = toupper(cont[0]); 
if (cont[0] == 'Y') 

搜索互联网例如“C++字符串变换小写”。