2016-03-26 11 views
0

ループ内の入力を使用しています(While)。また、私は何をしたいのですか?メソッドの内部でユーザーの入力を確認し、数字でない場合は入力を尋ねるためにもう一度戻ってください。問題は、私がプログラムを再起動する必要があることです。誰かがコードを制御する方法を私に説明することができますので、私はコードに戻ることができますか?本当にありがとう!Noob c#。メソッド内のユーザー入力を確認しようとしています

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

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

//メソッド

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

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

でそれを呼び出すされた場合はtrueを返しますあなたのための例外をキャッチしました。 – Plutonix

+0

もしあなたが言及したwhileループのようなコードを少し追加してみてください。これはちょうどコンソールアプリケーションのようで、入力された各文字を確認しようとしています。ユーザーが文字の入力を完了したときに文字列全体を確認するのではなく、入力時に各文字を検証する理由はありますか? – gmiley

+0

@Plutonixが言ったように、try/catchは必要ないので、 'TryParse'の戻り値がtrueであることを単に確認できます(ここではPlutonixが話している例です):' bool isNumeric = int.TryParse(a 、out b); ' – gmiley

答えて

1

Int32.TryParseは例外を上昇しません。それはIT **かどうかを示すフラグを返します** - 入力が整数

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

に変換され、あなたがTryParseでキャッチ/トライを必要といけない

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

...なぜ呼び出すコードが結果を得るのを妨げるので、なぜそれを行うのですか? – Plutonix

+1

ええ、私は次の質問を恐れる次のようになります。bからそのコンバージョン値を取得するにはどうすればよいですか? – Steve

関連する問題