1

私は最近 C# でコードを書き始めたので、今は基本を学んでいます。Google とこのサイトでこれを検索しようとしましたが、解決策を見つけることができませんでしたが、基本的に Console.Read() を実行し、入力を取り込んで整数変数に格納すると、入力した値が出力されると妙に違う。

実行しようとしているコードのブロックは次のとおりです。

        Console.WriteLine("Welcome To The Program!");
        Console.Write("Enter the radius of the sun: ");
        input = Console.Read();
        Console.WriteLine(input);
        Console.ReadKey();

入力は int 型で、5 と入力すると 53 が出力されます。0 を入力すると 48 が出力されます。

なぜこれが起こっているのか、誰でも説明できますか?最初に文字列入力として取得し、次に整数として解析することで入力を解析する方法があることは知っていますが、大きなコードの場合は時間がかかりすぎます。

4

4 に答える 4

4

Convert.ToInt32次のように行を文字列値として読み取っているので、中に入れます。

input = Convert.ToInt32(Console.Read());

于 2013-05-17T01:41:45.977 に答える
2

記録として、これが機能しなかった理由は、Console.Read がコンソールに入力された最初の文字の ASCII 整数表現を返すためです。「5」が画面に 53 をエコーし​​た理由は次のとおりです。

Console.Read は、コンソールの In ストリームから読み取りを開始します。ストリームの最初の文字は「5」です。「5」の ASCII 値は 53 です。「入力」には 53 の値が割り当てられます。

これで問題が解決するはずです:

input = int.Parse(Console.ReadLine());

これをより適切に使用することもできます:

int number;
if(!int.TryParse(Console.ReadLine(), out number)){
  Console.WriteLine("Input was not an integer.");
  return;
}
Console.WriteLine(number);
于 2013-05-17T01:43:30.917 に答える