gpt4 book ai didi

c# - Console.ReadLine 将 48 添加到 int

转载 作者:行者123 更新时间:2023-11-30 18:52:56 25 4
gpt4 key购买 nike

当我向 ReadLine() 输入 0 时,我得到 48。

这是一个错误吗?

class Program
{
static void Main(string[] args)
{
string name;
int age;

readPerson(out name, out age);
}
static void readPerson(out string name, out int age)
{
Console.Write("Enter name: ");
name = Console.ReadLine();
Console.Write("Enter age: ");
age = Console.Read();
Console.WriteLine("Name: {0}; Age: {1}", name, age.ToString());
}
}

最佳答案

不,这根本不是错误。

Console.Read() 返回输入的任何字符的 ASCII 字符代码。数字 0 的 ASCII 码是 48,数字 1 的 ASCII 码是 49,依此类推。不是随便加数字48,也不是跟out参数有什么关系。

您需要读取一行并将输入相应地转换为整数:

Console.Write("Enter age: ");
age = Convert.ToInt32(Console.ReadLine());

如果出于任何原因需要使用 Read(),那么就像我在评论中所说的那样,您需要将结果转换为 char。您还需要将变量从 int age 更改为 char age:

class Program
{
static void Main(string[] args)
{
string name;
char age;

readPerson(out name, out age);
}
static void readPerson(out string name, out char age)
{
Console.Write("Enter name: ");
name = Console.ReadLine();
Console.Write("Enter age: ");
age = (char) Console.Read();
Console.WriteLine("Name: {0}; Age: {1}", name, age.ToString());
}
}

请记住,Read() 一次只能读取一个字符,因此如果您需要解析多于一位的年龄,这将不起作用,您只使用 ReadLine() 会更好。

关于c# - Console.ReadLine 将 48 添加到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9156363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com