2017-06-10 6 views
-4

メソッドオーバーロードを理解するためにコンソールアプリケーションを作成しようとしています。 私はこのオーバーロードされたメソッドはダブル入力を使用しません

namespace GetStringName 
{ 
    public class GetString 
    { 
     public void Player(double num) 
     { 
      double number = num * 2; 
      Console.Write(number); 
     } 
     public void Player(string name) 
     { 
      char[] charr = name.ToCharArray(); 
      Array.Reverse(charr); 
      Console.Write(charr); 
     } 
    } 
} 

のようなクラスのlibを持って、それは常に元に戻す文字列ことをし

using GetStringName; 
using System; 

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      GetString y = new GetString(); 
      y.Player(Console.ReadLine());   
      Console.ReadLine(); 
     } 
    } 
} 

そして何でも、私は(文字列または整数)を入力し、以下のように私は私のコンソールアプリを得ました。 私が間違っていることを教えてもらえますか?

+0

['Console.ReadLine()'](https://msdn.microsoft.com/en-us/library/system.console.readline)は文字列を返します。それでおしまい。 –

答えて

-1
あなたがメソッドのパラメータとして、二重提供する必要が

が)Console.ReadLine(この

y.Player(Double.Parse(Console.ReadLine())); 
+0

ユーザーが分析できない値を入力した場合はどうなりますか? –

+0

これは別の質問です。私はトピックに答えました、なぜ彼は文字列の過負荷に落ちる。 – DolceVita

+0

この方法では、文字列を入力すると機能しません。:( – MaciejPL

0

を試してみてください は関係なく、常にあなたの入力に置く何の文字列を返します。あなたの入力をdoubleとして構文解析するには、double.Parseまたはdouble.TryParseのいずれかを使用する必要があります。

例:

double input; 
bool success = double.TryParse(Console.ReadLine(), out input); 
if(success) 
{ 
    y.Player(input); 
} 

それとも

try 
{ 
    y.Player(double.Parse(Console.ReadLine())); 
} 
catch(FormatException) 
{ 
    //Input is not a double 
} 
catch(OverflowException) 
{ 
    //Input is out of bounds for a double type 
} 

入力が無効である場合に解析が例外をスローする一方、解析が成功したかどうTryParseが示すブール値を返します。

通常、ユーザーが入力が有効でない理由をユーザーに明確に伝えない限り、通常はTryParseを優先します。

3

Console.ReadLine()メソッドは文字列を返します。入力がTryParse、入力がdoubleの場合はdoubleのメソッドが呼び出されます。それ以外の場合はstringのメソッドが呼び出されます。例:

static void Main(string[] args) { 
    GetString y = new GetString(); 
    string input = Console.ReadLine(); 
    double doubleInput; 

    if(double.TryParse(input, out doubleInput)) { 
     y.Player(doubleInput); 
    } else { 
     y.Player(input); 
    } 
} 
関連する問題