如何找出开关盒无限循环的原因?

时间:2016-03-30 17:59:28

标签: c#

我使用以下开关案例来读取不同类型的输入,每当我到达分号时,输出就会无限循环(检测到半冒号;)。我发现这样的一个解决方案建议在所有情况后再次检查输入,我已经在我的代码中执行了此操作。我无法确定它为什么循环并卡在分号上。

     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”并且没有变化。我使用一个文本框作为字符串,我怀疑它可能不会放弃字符串中的最后一个字符串(;),如果是这样,我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

switch没有循环 - while循环 - 没有任何东西将inputType设置为0,所以它无限循环

如果你在开关中缩进break语句来打破while循环,那么添加一个状态变量:“

bool _break = false; 
while (!_break && inputType != 0) 
{
    ...
        case 5: // delimeter
            {
                _break = true;
                break;
            } // end case 5

   ...
}