0

私は非常に単純なプログラムを実行しています。これは、ユーザーに番号を入力するように求めるだけで、今のところ、画面に表示するだけです。しかし、私が知らない何らかの理由で、入力した数字が 48 に追加されているようです。

例: 2 を入力すると、50 が表示されます。

私が監督している何らかの基本的な法則、またはコードで犯した何らかの間違いはありますか?

気付かなかったら初心者です

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int Num;
            Console.WriteLine("Please Input Number of Rows you want to make in your pyrimid: ");
            Num = Console.Read();

            Console.WriteLine(Num);// Just to check if it is getting the right number
            Console.Read();//This is Here just so the console window doesn't close when the program runs

        }
    }
}

編集: 面倒なことは嫌いですがnum = int.Parse(Console.Read());、'int.Parse(string)' に一致する最適なオーバーロードされたメソッドには、いくつかの無効な引数があります。これは、オーバーロード メソッドが必要だということですか?

4

3 に答える 3

5

Console.Read50であるASCII コードを取得するcharようにキャストすると、 so が返されます。(暗黙的に) キャストする代わりに、int に解析する必要があります。int2

Num = int.Parse(Console.Read());

ノート:

  1. 入力が非数値になる可能性がある場合は、使用しますint.TryParse
  2. C# でのローカル変数の規則はキャメル ケースなので、に変更Numnumます。
于 2013-03-29T12:11:53.807 に答える
1

Console.Read文字自体ではなく、文字コードを返します。

char num = (char)Console.Read();
Console.WriteLine(int.Parse(num.ToString()));

このコードは理想的ではありませんが、何が起こっているかを示しています。数字が入力されることを期待しているので、使用することもできます

int num = Console.Read() - 48;
于 2013-03-29T12:12:19.493 に答える
0

Console.Read読み取りは、標準入力からバイトを読み取ります。

2のASCII値を持っています50

コンソールから読み取った値を解析する必要があります

Num = Int32.Parse(Console.Read()); // or Num = int.Parse(Console.Read());
于 2013-03-29T12:12:50.233 に答える