【问题标题】:Console.WriteLine is printing out different values from what i entered [duplicate]Console.WriteLine 打印出与我输入的值不同的值 [重复]
【发布时间】:2018-11-13 22:38:17
【问题描述】:

所以我输入了这个代码

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。请帮忙。我以为是我的笔记本电脑上的,所以我重新启动了它,但仍然没有运气。

【问题讨论】:

标签: c# .net


【解决方案1】:

你想要的

Console.ReadLine();

读取是下一个字符

【讨论】:

    【解决方案2】:

    因为

    的 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 2013-05-31
      相关资源
      最近更新 更多