我使用以下开关案例来读取不同类型的输入,每当我到达分号时,输出就会无限循环(检测到半冒号;)。我发现这样的一个解决方案建议在所有情况后再次检查输入,我已经在我的代码中执行了此操作。我无法确定它为什么循环并卡在分号上。
while (inputType != 0)
{
switch (inputType)
{
case 1: // alpha
{
} // end case 1
case 3: // numeric
{
} // end case 3
case 5: // delimeter
{
break;
} // end case 5
case 6: // space
{
readChar(ref sentenceIX, ref sentence, ref inputChar, ref inputType);
if (inputType == 6)
{
readChar(ref sentenceIX, ref sentence, ref inputChar, ref inputType);
MessageBox.Show("Space detected " +inputChar);
} // end if
break;
} //end case 6
case 7: // semi colon
{
readChar(ref sentenceIX, ref sentence, ref inputChar, ref inputType);
if (inputType == 7)
{
MessageBox.Show("Semi Colon detected " +semiColonChar);
readChar(ref sentenceIX, ref sentence, ref inputChar, ref inputType);
}
break;
}
default:
{
break;
}
} // end switch
} //end while
我也试过将案例6和7“if”而不是“while”并且没有变化。我使用一个文本框作为字符串,我怀疑它可能不会放弃字符串中的最后一个字符串(;),如果是这样,我怎么能这样做呢?
答案 0 :(得分:0)
switch
没有循环 - while
循环 - 没有任何东西将inputType
设置为0,所以它无限循环
如果你在开关中缩进break
语句来打破while
循环,那么添加一个状态变量:“
bool _break = false;
while (!_break && inputType != 0)
{
...
case 5: // delimeter
{
_break = true;
break;
} // end case 5
...
}