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.Read返回char,所以当你将它转换为yoint得到50的 ASCII 码!您应该解析为 int 而不是(隐式)转换它:2

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

笔记:

  1. 如果输入可以是非数值,请使用int.TryParse
  2. C# 中局部变量的约定是驼峰式,所以Num改为num.
于 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从标准输入读取字节。

2ASCII 值为50

您需要解析从控制台读取的值

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