2016-03-30 3 views
-1

Я использую следующий корпус переключателя, чтобы читать разные типы ввода, и всякий раз, когда я достигаю точки с запятой, вывод просто бесконечно циклически (обнаружено полутопливо;). Одно из решений, которое я нашел для чего-то вроде этого, предложил проверить ввод снова после всех случаев, и я уже делаю это в своем коде. Я не могу определить, почему он зацикливается и застревает в точке с запятой.Как узнать, почему случай переключения петли бесконечно?

 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 «если» вместо «пока» и без изменений. Я использую текстовое поле для строки, и я подозреваю, что это может не дать последнему char (;) в строке, и если да, то как бы я это сделал?

+2

Нам не нужен весь ваш код ... пожалуйста, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (внимание на * минимальное в этом случае) –

+0

Чтобы ответить на вопрос в ваш заголовок, используйте отладчик –

+1

отладчик - ваш лучший friend ... –

ответ

0

switch не петля - while петли - никогда ничего не устанавливает inputType к 0, так что петли бесконечно

если вы indend в break операторы внутри коммутатора, чтобы разорвать петлю while затем добавить переменную состояния:»

+0

Спасибо за ответ, проблема в том, что он не будет читать строки после первого, так как он остановится после достижения точки с запятой в конце первой строки. – Rokudo