Console.WriteLine从我输入的内容中打印出不同的值

时间:2018-11-13 22:38:17

标签: c# .net

所以我输入了这个密码

static void Main(string[] args)
{
    int y = Console.Read();
    Program program = new Program();
    program.Prime(y);
}

public void Prime(int Value)
{
    Console.WriteLine(Value);
}

当我输入一个值时,输出的是我输入的值+ 48。 因此,如果输入3,“ Console.WriteLine”将输出51。请帮助。我以为是从笔记本电脑上来的,所以我重新启动了它,但还是没运气。

3 个答案:

答案 0 :(得分:1)

您想要

  

Console.ReadLine();

阅读是下一个字符

答案 1 :(得分:1)

因为ASCII码

'0' is 48
'1' is 49
.
.
.
'9' is 57

例如,如果输入1,则实际上不是数字1,而是“ 1”(ASCII码为49的字符),并将其解析为int会得到49。 您可以这样做以获得所需的结果:

int y = Console.Read() - '0';

但是,如果您想读取大于9(大于一位数)的数字将无法正常工作,则最好将其解析为int:

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

或者甚至确保输入的值可解析为int:

int y = 0;
while(!int.TryParse(Console.ReadLine(), y);

答案 2 :(得分:0)

它正在尝试插入字符串的ascii值,其中3 =51。Console.Read()返回ascii值,因为您将其作为int。要解决此问题,请改用string-当您不对其进行任何操作时,没有理由在此使用int

static void Main(string[] args)
{
    string y = Console.Read(); // changed int to string
    Program program = new Program();
    program.Prime(y);
}

public void Prime(string Value) // changed into to string
{
    Console.WriteLine(Value);
}