2016-03-30 13 views
-1

Farklı giriş türlerini okumak için aşağıdaki anahtar kutusunu kullanıyorum ve her zaman bir noktalı virgülle ulaştığımda, çıktı sonsuz döngüden geçiyor (yarı kolon algılandı;). Böyle bir şey için bulduğum bir çözüm, tüm vakalardan sonra girişi tekrar kontrol etmeyi önerdi ve bunu zaten kodumda yaptım. Bir döngüde neden döngü oluşturduğunu ve sıkıştığımı anlayamıyorum.Bir anahtar kutusunun neden sonsuz bir şekilde döngü yaptığını nasıl anlarsınız?

 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 

Ben de onun yerine "iken" ve hiçbir değişim "eğer" case 6 ve 7 hale çalıştılar. Dize için bir metin kutusu kullanıyorum ve dizideki son char (;) 'i terk etmemekte olduğundan şüpheleniyorum ve eğer öyleyse bunu nasıl yapabilirim? "

: - while döngüler - hiçbir şey sonra bir devlet değişken eklemek while döngü kırmaya anahtarı içinde break ifadeleri indend eğer inputType 0 yüzden sonsuz

döngüler setleri

+2

Tüm kodunuza ihtiyacımız yok ... lütfen [MCVE] (http://stackoverflow.com/help/mcve) gönderin (bu durumda minimum * vurgulayın) –

+0

Soruyu yanıtlamak için başlığınız, hata ayıklayıcısını kullanın –

+1

hata ayıklayıcınız en iyisi arkadaşım ... –

cevap

0

switch

döngü değil
bool _break = false; 
while (!_break && inputType != 0) 
{ 
    ... 
     case 5: // delimeter 
      { 
       _break = true; 
       break; 
      } // end case 5 

    ... 
} 
+0

Yanıt için teşekkürler, bununla ilgili problem, ilk satırın sonunda noktalı virgülün sonuna ulaştıktan sonra duracağı için ilk satırdan sonra herhangi bir satır okumayacağıdır. – Rokudo

İlgili konular