2016-01-22 87 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++字符串變換小寫」。