为什么我的程序不断进入我的输入验证循环
Why does my program keep going into my input validation loop?
好的,我确定我错过的东西很少,但这是我所拥有的:
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
您的 while 循环看起来不对。 应该是这样的。
修复: while ((color1 != red) && (color1 != blue) && (color1 != yellow))
//如果输入不等于这些颜色中的任何一种。
你的 while ((color1 != red) || (color1 != blue) || (color1 != yellow))
//如果输入为 RED,则第一个条件为假,但第二个和第三个条件为真。这就是它循环的原因。
您将颜色初始化为自身,这是未定义的行为。请改用字符串常量。你应该使用 &&,而不是 ||。
正确的代码:
#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;
}
}
正如其他人所说,问题出在当时的状况上。在这种情况下,您必须使用&&
。
可以这样想,如果color1
被分配了一个值"蓝色",它不是"红色",因此条件color1 != "red"
TRUE
。
这同样适用于其余值,因此即使 color1
的值是可接受的值之一,整个条件也将继续TRUE
。
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?! :)
- 无论我使用什么,我的输入都会被跳过
- 我的程序没有从文件中读取并输入数据
- 如何反转我的输入,包括否定
- 为什么 IDE 无法识别我的输入?
- 在我的输入中没有空格的情况下,程序工作正常?C++
- 如何使用我的输入制作构造函数?
- 使用 crontab 运行 C++ 程序,"cin"不会等待我的输入
- 如何理解C++常见问题中的"程序忽略我的输入请求"?
- 如何在我的c版本Tic-Tac-Toe中修复我的输入验证
- 我的输入是否正确写入我的数组
- 为什么我的程序不断进入我的输入验证循环
- 如何让这个数组填充我的输入值
- IsAlpha函数不接受我的输入
- 为什么我的输入流无法打开我的文件?C++
- localtime()和gmtime()似乎把我的输入流C++/C搞砸了
- 将文件读取到向量中,我的输入函数有什么问题?
- 我的输入文件中没有读取C++空间
- 计数排序我的输入是1,4,3,1但输出是垃圾值1,1,3输入不正确
- 为什么char[1]从我的输入文件中读取整个单词
- 无法读取 c++ 中的 txt 文件.我不断收到我的输入文件失败文本.谁能帮我弄清楚要解决什么