2016-07-26 3 views
1

私は、印刷ラインにカスタムメソッドを作った後、ここに変数 を倍増することを割り当てるために、ユーザ入力を読んで、私のコードは次のとおりです。カスタムコンソールの書き込み線のための方法および変数に値を代入 - C#

double result = 0; 
double a, b; 
while (true) 
      { 


       if (Double.TryParse(GetValue("Enter value for a "), out a) 
        && Double.TryParse(GetValue("Enter value for b "), out b)) 
       { 
        result = a + b; 
        break; 
       } 
       else 
       { 
        Console.WriteLine("invalid value please try again.."); 
        continue; 
       } 
} 
     public static double GetValue(string input) 
     { 
      double z1; 
      double value; 

       Console.WriteLine(input); 
       value = Console.ReadLine(); 
       z1 = value; 
       return z1; 
      } 

が、午前私は 'double'を 'string'に変換できないというエラーに直面しています 。誰かが間違っていることを説明することはできますか?

+0

コンソール入力を解析する必要があります。それはストリングです、あなたはダブルが欲しいです。 Double.TryParse –

答えて

5

問題はライン

value = Console.ReadLine(); 

であるが、あなたはおそらく既に知っていました。 ReadLineは文字列を返します。

public static string GetValue(string input) 
{ 
    Console.WriteLine(input); 
    return Console.ReadLine(); 
} 

しかし、間違いなくクリーンなソリューションが求められます関数の中でそれを解決するために、次のようになります。

最も簡単な修正は、すでに機能の外にそれを解析しようとするので、GetValueメソッドから文字列を返すようになります入力およびそこからdoubleを返す:あなたが関数にパースのロジックを分離するので、あなたはdouble.TryParseに一つだけの呼び出しを必要とするので

double result; 
double a, b; 

a = GetValue("Enter value for a "); 
b = GetValue("Enter value for b "); 
result = a + b; 

public static double GetValue(string input) 
{ 
    double value; 
    Console.WriteLine(input); 

    while (!Double.TryParse(Console.ReadLine(), out value)) 
    { 
     Console.WriteLine("invalid value please try again.."); 
    } 

    return value; 
} 

私はこれがわずかに良いと思い理由が、あります。さらに、誰かがbに間違った値を入力した場合、コード内では、aの値でやり直す必要があります。コード内では、bを再試行するだけです。

+0

ありがとう、それははるかに良いです – Skoochapp

関連する問題