我正在使用这个程序,由于某种原因,while循环没有像我预期/预期的那样运行。
#include <iostream>
using namespace std;
int main() {
const int size = 5;
char answer_sheet[size] = {'B','D','A','A','C'}; //'A','B','A','C','D','B','C','D','A','D','C','C','B','D','A'};
char student_answer[size];
char answer;
for(int i=0;i<size;i++)
{
cout << i+1 << ": ";
cin >> answer;
cout << endl;
while(answer != 'A' || answer != 'B' || answer != 'C' || answer != 'D')
{
cout << "You must enter either A, B, C, or D" << endl;
cout << i+1 << ": ";
cin >> answer;
cout << endl;
}
student_answer[i] = answer;
}
return 0;
}
我正在输入一个字母A,B,C或D,当我输入它时,我进入while循环的正确方式是在我不假设的情况下,除非我错误地输入字符。
我似乎无法弄清楚问题。
由于
答案 0 :(得分:2)
answer != 'A' || answer != 'B'
的任何值, answer
始终为true。
您的意思是&&
而不是||
吗?
答案 1 :(得分:1)
您正在寻找的条件是
while(answer != 'A' && answer != 'B' && answer != 'C' && answer != 'D')
||应该和&amp;&amp;在每种情况下,你也不应该检查'C'或'D'
答案 2 :(得分:1)
你忘了C和D(可能是拼写错误):
while(answer != 'A' || answer != 'B' || answer != 'A' || answer != 'B')
也许你想要:
while (answer != 'A'
&& answer != 'B'
&& answer != 'C'
&& answer != 'D')
{
}
另一种方法:
const std::string allowable_answers = "ABCD";
//...
while (allowable_answers.find(answer) == std::string::npos)
{
// answer is not in the allowable set.
}
答案 3 :(得分:0)
首先,为什么不使用do / while循环而不是while循环。其次,你有
while(answer != 'A' || answer != 'B' || answer != 'A' || answer != 'B')
{
cout << "You must enter either A, B, C, or D" << endl;
cout << i+1 << ": ";
cin >> answer;
cout << endl;
}
如果A,B,C,D不输入,程序是否应该循环?如果A,B,A,B不是答案,你可以循环。如果没有输入正确的答案,do / while循环将进入循环并继续循环