开关内部的循环变为无穷大
loop inside switch becomes infinite
当程序进入第二个循环时,即使我将第二个环路的值设置为false,它也会变为无穷大。问题发生在哪里?第一个while循环我在退出时从未遇到任何问题,但第二个。。。我就是不知道在哪里,也不知道为什么。
int RareData::assignRareType()
{
int switchType;
std::cin >> switchType;
bool valid = true;
bool valid2 = true;
while (valid)
{
switch (switchType)
{
case 0:
std::cout << "1 - Character Changen2 - Account Changen3 - Bothn";
int switchData;
std::cin >> switchData;
valid2 = true;
while (valid2)
{
switch (switchData)
{
case 1:
valid2 = false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
assignCharacter();
break;
case 2:
valid2 = false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
assignAccount();
break;
case 3:
valid2 = false;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
assignAccount();
assignCharacter();
break;
default:
std::cout << "Options only range from 1-3n1 - Character Changen2 - Account Changen3 - Bothn";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
std::cin >> switchData;
}
}
break;
default:
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
std::cin >> switchType;
}
}
return 0;
}
您将valid2
设置为false
,但valid
仍然为true。所以你的第一个while循环一遍又一遍。执行顺序如下:
while(valid) == true
case 0:
get switchdata, set valid2 = true
second while loop
break
Repeat because valid is always true, switchtype never changes.
变量valid
被初始化为true
,并且从未更改,因此实际上是第一个while
循环从未终止,而不是第二个。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- 无穷大而循环时具有递归函数
- Matlab 如何知道有一个 .mex64 文件并避免无穷大"compiling"循环
- MIPS :循环进入无穷大
- unsigned int导致循环为无穷大
- 链表循环达到无穷大
- 而当 CIN 的输入是'dot'时循环到无穷大
- 开关内部的循环变为无穷大