Kil*_*ing 0 c++ while-loop switch-statement
当程序进入第二个循环时,即使我将第二个循环的值设置为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 Change\n2 - Account Change\n3 - Both\n";
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-3\n1 - Character Change\n2 - Account Change\n3 - Both\n";
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;
}
Run Code Online (Sandbox Code Playgroud)
你设定valid2为false,但valid仍然是真的.所以你的第一个while循环一次又一次地运行.执行顺序如下:
while(valid) == true
case 0:
get switchdata, set valid2 = true
second while loop
break
Repeat because valid is always true, switchtype never changes.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |