2017-04-08 9 views
-2

"done"と入力すると、数値が追加されず、結果が表示されます。 "if"ステートメントを "catch"ステートメントにスキップするだけです。私はすでに別の場所に "if"ステートメントを置こうとしましたが、 "result"が "try"ステートメントの内部にあるため、できませんでした。助けてください。 これは次のようになっています:数字(5)を入力してから「Enter」を押し、次に別の数字(5.3)を入力して「Enter」をもう一度押すと、「10.3」(5 + 5.3 = 10.3)。本当に長いテキストのために申し訳ありません、私はどんな助けにも感謝します。C#、私のコードはtry-catchステートメント内の私のifステートメントを飛び越えます

 while (true) 
     { 

      Console.WriteLine("Enter a number or type \"done\" to see the average: "); 
      var input = Console.ReadLine(); 

      try 
      { 
       var result = double.Parse(input); 
       if(input == "done") 
       { 
        Console.WriteLine(result += result); 
        break; 
       } 
       else 
       { 
         continue; 
       } 
      } 
      catch (FormatException) 
      { 
       Console.WriteLine("That is not valid input."); 
      } 
+1

if文に一度も当てはまらない場合は、その前に何か例外が発生しています。これは捕捉されているものです。入力が「完了」であれば、それがどのようにダブルになると思いますか? –

+0

"done"と等しい場合は、入力をdouble _before_ checkingに解析しようとします。つまり、ユーザーが「完了」と入力すると例外が発生するため、if内のコードは実行されません。 –

答えて

1

あなたのコードが正しくありません:"done"doubleにをを解析されるないチャンスを持っていません。あなたは二重のデータ型に「完了」を解析している

// since you want to aggregate within the loop, you have to declare sum 
    // without the loop 
    double sum = 0.0; 

    while (true) 
    { 
     //DONE: You're summing up, right? It'll be sum, not average 
     Console.WriteLine("Enter a number or type \"done\" to see the sum: "); 

     var input = Console.ReadLine(); 

     if (input == "done") 
     { 
      Console.WriteLine(sum); 
      break; 
     } 

     try 
     { 
      sum += double.Parse(input); 
     } 
     catch (FormatException) 
     { 
      Console.WriteLine("That is not valid input."); 
     } 
    } 
+0

ありがとうございました!私は新しくC#で教えられているので、私はそのような愚かな質問をしました。私は今何が間違っているかを見ます。ありがとうございました :) –

0

とformatExceptionが上昇した理由です:あなたは"done"最初をチェックする必要があります。

関連する問題