好的,我确定我失踪的东西真的很少,但这就是我所拥有的:
int main()
{
string red = red, blue = blue, yellow = yellow, color1,
color2, mixResult;
cout << "Please enter a primary color." <<endl;
cin >> color1;
while ((color1 != red) || (color1 != blue) || (color1 != yellow))
{
cout << "Error!: Please enter a primary color." <<endl;
cout << " *NOTE ALL ENTRIES MUST BE LOWERCASE* " <<endl;
cin >> color1;
}
现在出于某种原因每次我运行它并输入例如红色程序进入while循环,它不应该。任何帮助将不胜感激。我可以显示更多代码,我正在使用#include
答案 0 :(得分:3)
你的while循环看起来不对劲。它应该是这样的。
修正:
while ((color1 != red) && (color1 != blue) && (color1 != yellow))
//如果输入不等于任何这些颜色。
您的
while ((color1 != red) || (color1 != blue) || (color1 != yellow))
//如果输入为RED,则第一个条件为false,但第二个和第三个条件为真。这就是它循环的原因。
答案 1 :(得分:0)
while ((color1 != red) || (color1 != blue) || (color1 != yellow))
由于color1
只能是单个值,除非red == blue == yellow
,否则此循环将永久运行。你的意思可能是
while ((color1 != red) && (color1 != blue) && (color1 != yellow))
此外,正如其他人指出的那样,您需要通过用引号括住其文本来正确初始化字符串变量:
string red = "red", blue="blue", yellow="yellow"
否则你所做的事情相当于:
string red; // red is an uninitialized string
red = red; // no kidding?! :)
答案 2 :(得分:0)
您将颜色初始化为自身,这是未定义的行为。请改用字符串常量。你应该使用&amp;&amp;,而不是||。
正确的代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string red = "red", blue="blue", yellow="yellow", color1;
cout << "Please enter a primary color." <<endl;
cin >> color1;
while ((color1 != red) && (color1 != blue) && (color1 != yellow))
{
cout << "Error!: Please enter a primary color." <<endl;
cout << " *NOTE ALL ENTRIES MUST BE LOWERCASE* " <<endl;
cin >> color1;
}
}
答案 3 :(得分:0)
&&
。
这样想,如果为color1
分配的值为&#34;蓝色&#34;,则不是&#34;红色&#34;因此条件color1 != "red"
为TRUE
。
这同样适用于其余值,因此即使TRUE
的值是可接受的值之一,整个条件仍将是color1
。