2016-10-20 8 views
1

Try.Parseを使用して、プログラムが整数だけをピックアップすることを確認しました。整数を入力すると、プログラムの次の部分に進みますが、小数点以下の桁数を入力すると、小文字が有効ではないと言われるようにelse文にプログラムが渡ります整数。だから私は、プログラムを実行し、整数を入力すると、それはちょうどより多くの整数を要求し続けると、私はちょうど整数で入力したことを取ることはありません。だから10進数で入力すると、それは私をそこに連れて行きます。私は整数を入力し、別の整数の要求を再生し続けます。C#単純なプログラムエラー。コンソールが私のelseステートメントリクエストを処理できない

これは非常に基本的ですが、私はそれの周りに私の頭を包むことはできません私はちょうど私を許してコーディングを開始しました。私は、コンピュータを取り込んで処理し、整数で入力して次のステートメントに移ります。

説明は本当に役に立ちます。前もって感謝します。

+5

'変わることはありませんinputcost':

は、whileループで偽の節を参照してください。 – SLaks

+0

OK、同じパラメータを持つ行のint.TryParse()を2回呼び出しています。初めて、戻り値を 'result'として保存します。それから、それを 'while 'の条件と呼んでいます。 'result'がfalseの場合、whileの本体は決して実行されません。 'result'がfalseであることをチェックする唯一の他の場所は、whileループの中にあります。あなたはその場合、必ず起こることはありません。 –

+0

また、 'if(result == true)'ではなく 'if(result)'を書くことができます。 –

答えて

3

あなたがループ

while (!result) 
{ 
     Console.Write("Please Enter A Valid Integer Value"); 
     Console.WriteLine(); 
     inputcost = Console.ReadLine(); 
     result = int.TryParse(inputcost, out validcost); 

} 

Console.Write("Valid Value"); 
0

inputcostの値は、あなたのコード内で一度設定されている内resultinputcostを更新する必要があります。あなたはwhileループでそれを更新する必要があります。

静的な無効メイン(文字列[] args){

string inputcost; 
    string inputmoney; 
    int validcost; 

    Console.Write("Please Enter The Cost, In Pennies, Of The Item You Have Purchased: "); 
    inputcost = Console.ReadLine(); 

    bool result = int.TryParse(inputcost, out validcost); 
    while (!int.TryParse(inputcost, out validcost)) 
    { 
     if (result == true) 
     { 
      Console.Write("Valid Value"); 
     } 
     if (result == false) 
     { 
      Console.Write("Please Enter A Valid Integer Value"); 
      Console.WriteLine(); 
      inputcost = Console.ReadLine(); 
     } 

    } 
+1

'while'ループブロックは' result'がfalseの場合何回実行すると思いますか? –

関連する問題