我如何循环循环switch语句检查重新检查char?(C )
How can I loop a switch statement to check re-check a char? (C++)
我想确保用户在默认值中输入'a',''','''',b','c'或'd' - 输入角色,直到它匹配上面列出的4个字符之一。我如何循环一个开关语句以确保他们做出了适当的选择?
cout << "Enter the seat that you'd like to place the passenger in: "; cin >> aisle;
aisle = toupper(aisle);
switch (aisle){
case 'A':
temp = 0;
break;
case 'B':
temp = 1;
break;
case 'C':
temp = 2;
break;
case 'D':
temp = 3;
break;
default:
cout << "Input error, please re-enter an aisle: "; cin >> aisle;
aisle = toupper(aisle);
break;
}
温度是将字符转换为索引值以引用数组的方法。
我会在default
情况下设置标志,然后将整个内容放入do-while
循环中,例如:
bool tryAgain = false;
do
{
cout << "Enter the seat that you'd like to place the passenger in: "; cin >> aisle;
aisle = toupper(aisle);
switch (aisle){
case 'A':
temp = 0;
break;
case 'B':
temp = 1;
break;
case 'C':
temp = 2;
break;
case 'D':
temp = 3;
break;
default:
cout << "Input error, please re-enter an aisle (A, B, C, or D)";
tryAgain = true;
break;
}
}
while (tryAgain);
您无需开关语句即可完成。例如
#include <cstring>
//...
int temp = -1;
cout << "Enter the seat that you'd like to place the passenger in: ";
do
{
cin >> aisle;
aisle = toupper(aisle);
const char *seats = "ABCD";
const char *p = strchr( seats, aisle );
temp = ( p == NULL ? -1 : p - seats );
if ( temp == -1 )
{
cout << "Input error, please re-enter an aisle: ";
}
} while ( temp == -1 );
使用while
循环围绕switch
语句。
while ( true )
{
bool breakLoop = true;
cout << "Enter the seat that you'd like to place the passenger in: ";
cin >> aisle;
aisle = toupper(aisle);
switch (aisle){
case 'A':
temp = 0;
break;
case 'B':
temp = 1;
break;
case 'C':
temp = 2;
break;
case 'D':
temp = 3;
break;
default:
cout << "Input error.";
breakLoop = false;
}
if ( breakLoop )
{
break;
}
}
您可以使用 goto
语句,例如:
retry:
cout << "Enter the seat that you'd like to place the passenger in: ";
cin >> aisle;
aisle = toupper(aisle);
switch (aisle){
case 'A':
temp = 0;
break;
case 'B':
temp = 1;
break;
case 'C':
temp = 2;
break;
case 'D':
temp = 3;
break;
default:
cout << "Invalid input, please try again. " << endl;
goto retry;
break;
}
如果您的脚本有点冗长,我不建议使用goto
。
您将其标记为C ,并使用了STD :: CIN。也许您应该考虑std :: strings。
在C 中:
int retVal = -1;
// for simplicity during development, I use ss for input
std::stringstream ss;
ss << "53d"; // change test sequence here
std::cout << "Enter seat you'd like to place the passenger in: ";
char aisle;
do
{
ss >> aisle; // use ss instead of cin for development
// for development, echo user inputs,
// but remove the following before release
std::cout << " " << aisle << std::endl;
// toupper returns an int, but aisle is char
aisle = static_cast<char>(toupper(aisle));
const std::string Seats = "ABCD";
size_t indx = Seats.find(aisle);
if(indx != std::string::npos) // found aisle in Seats
{
retVal = aisle - 'A'; // return 0, 1, 2, or 3
break; // found - aisle is in range
}
std::cout << "Input error, please re-enter an aisle: ";
} while(true);
std::cout << "aisle: " << aisle << " retVal: " << retVal << std::endl;
相关文章:
- 使用for循环检查数组中的重复项
- 在做一段时间内检查字符的无限循环
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 对于检查 >=0 终止条件时的循环索引类型
- 如何创建一个循环,该循环检查每次迭代并在每次迭代后从头开始
- 输入数据类型检查循环未按预期工作 (C++)
- 虽然循环不检查或条件
- 试图使循环仅检查字符串是否仅数字,而在编程中允许的C IM中允许的负数是一个类项目
- 避免在C 中的循环中检查相同的条件
- 如何在 while 循环C++中检查 int 输入是否为空或用户按 Enter 键
- 如何在 uwp c# 中循环遍历和检查 Xbox 控制器状态
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- C是否优化了循环的检查部分
- 尝试使用while循环从文件中读取数据.还必须检查以确保第一个和唯一的值不是-1
- 在循环检查空指针时简化DO
- 没有检查循环C 的条件
- 检查循环
- 检查循环中出现的任何条件是否已满足c++
- 检查循环条件是否应计入比较总数