2016-03-26 21 views
0

Döngü (While) içinde bir girdi kullanıyorum. Ayrıca yapmak istediğim, kullanıcının girdisini, bir yöntem içinde doğrulamak ve eğer bir sayı değilse, o zaman tekrar giriş yapmak için geri dönmesi gerekir. Sorun şu ki, programı başlattığımda programı yeniden başlatmam gerekiyor. Birisi kodu nasıl kontrol edeceğimi açıklayabilir mi? Çok teşekkürler!Noob C#. Bir yöntem içinde kullanıcı girdisini doğrulamaya çalışıyorum

  Console.WriteLine("Efetue a jogada ->"); 
      string escolha = Console.ReadLine(); 
      int verificaçaoEscolha = escolhaVerificacao(escolha); 

      if(valido == 1){ 
      Console.WriteLine("Try again"); 

// Yöntem

public static int escolhaVerificacao(string a) { 
     int b; 
     int valido = 0; 

     try { 
      int.TryParse(a, out b); 
     } 
     catch (FormatException) { 
      valido = 1; 
     } 
     return valido; 
    } 
+0

ile çağrı olup olmadığını Doğru döndürür - bu belirten bir bayrak döndürür olup olmadığını ** BT ** Senin için bir istisna yakaladı. – Plutonix

+0

Yapabilirseniz, bahsettiğiniz while döngüsü gibi biraz daha fazla kod eklemeyi deneyin. Bu sadece bir konsol uygulaması gibi görünüyor ve her karakteri yazdıkça doğrulamaya çalışıyorsunuz. Kullanıcı giriş karakterleri tamamlandığında tüm dizgiyi doğrulamak yerine, girişteki her karakteri doğrulamanızın bir nedeni var mı? – gmiley

+0

@Plutonix'in dediği gibi, try/catch'a ihtiyacınız yok, sadece 'TryParse' dönüşünün gerçek olup olmadığını kontrol edebilirsiniz (burada, Plutonix'in bahsettiği waht örneğidir): 'bool isNumeric = int.TryParse (bir , dışarıda b); ' – gmiley

cevap

1

Int32.TryParse istisnalar yükselmez. giriş tamsayı

public static bool escolhaVerificacao(string a) 
{ 
    int b; 
    return int.TryParse(a, out b); 
} 

dönüştürülür ve Sen TryParse ile bir deneme/yakalama ihtiyacım yok

Console.WriteLine("Efetue a jogada ->"); 
string escolha = Console.ReadLine(); 
bool verificaçaoEscolha = escolhaVerificacao(escolha); 
if(!verificaçaoEscolha) 
{ 
    Console.WriteLine("Try again"); 
} 
+0

... soruyu yalvarıyor neden arama kodu – Plutonix

+1

Evet almasını engeller çünkü Evet, bir sonraki soru olacak be: bu dönüşüm değerini b'den nasıl alırım? – Steve

İlgili konular