为什么C#整数输入不';你不接受正确的值吗?
我最近开始用C#编写代码,所以我现在只是在学习基础知识。我曾尝试通过谷歌搜索这个问题,但在这个网站上,我找不到任何解决方案,但基本上,当我使用Console.Read()并将输入值存储到整数变量中时,我输入的值在输出时会有奇怪的不同 下面是我试图运行的代码块:为什么C#整数输入不';你不接受正确的值吗?,c#,parsing,input,console,integer,C#,Parsing,Input,Console,Integer,我最近开始用C#编写代码,所以我现在只是在学习基础知识。我曾尝试通过谷歌搜索这个问题,但在这个网站上,我找不到任何解决方案,但基本上,当我使用Console.Read()并将输入值存储到整数变量中时,我输入的值在输出时会有奇怪的不同 下面是我试图运行的代码块: Console.WriteLine("Welcome To The Program!"); Console.Write("Enter the radius of the sun: "); i
Console.WriteLine("Welcome To The Program!");
Console.Write("Enter the radius of the sun: ");
input = Console.Read();
Console.WriteLine(input);
Console.ReadKey();
输入是一种int类型,当我输入5时,它将输出53。如果我输入0,它将输出48
有人能解释一下为什么会发生这种情况吗?我知道有一种解析输入的方法,首先将其作为字符串输入,然后将其解析为整数,但对于较大的代码段来说,这将花费太长的时间。将其放入
Convert.ToInt32
中,因为您将行作为字符串值读取,如下所示:
input=Convert.ToInt32(Console.Read())
将其放入Convert.ToInt32
中,因为您将该行作为字符串值读取,如下所示:
input=Convert.ToInt32(Console.Read())代码>对于记录,此操作不起作用的原因是Console.Read返回控制台中输入的第一个字符的ASCII整数表示形式。“5”在屏幕上回响的原因是:
从控制台的输入流开始读取。
流中的第一个字符是“5”。
“5”的ASCII值为53。
“输入”的值为53
这将解决您的问题:
input = int.Parse(Console.ReadLine());
您还可以更好地使用此选项:
int number;
if(!int.TryParse(Console.ReadLine(), out number)){
Console.WriteLine("Input was not an integer.");
return;
}
Console.WriteLine(number);
对于记录,这不起作用的原因是Console.Read返回在控制台中输入的第一个字符的ASCII整数表示形式。“5”在屏幕上回响的原因是:
从控制台的输入流开始读取。
流中的第一个字符是“5”。
“5”的ASCII值为53。
“输入”的值为53
这将解决您的问题:
input = int.Parse(Console.ReadLine());
您还可以更好地使用此选项:
int number;
if(!int.TryParse(Console.ReadLine(), out number)){
Console.WriteLine("Input was not an integer.");
return;
}
Console.WriteLine(number);
您正在接收有关字符的ASCII值。为了得到你想要的,你必须接受一个字符串,然后解析它。这将花费比您想象的更少的时间。您正在接收相关字符的ASCII值。为了得到你想要的,你必须接受一个字符串,然后解析它。这将花费比您想象的更少的时间。如果您一次只想读取一个字符,则可以使用以下方法:
int input = int.Parse(((char)Console.Read()).ToString());
这将获取代码点的字符,然后在解析之前将其转换为字符串。但是,如果您将有多个字符,或者输入可能不是数字,则应查看响应。如果您一次只想读取一个字符,则可以使用以下方法:
int input = int.Parse(((char)Console.Read()).ToString());
这将获取代码点的字符,然后在解析之前将其转换为字符串。但是,如果您将有多个字符,或者输入可能不是数字,那么您应该查看响应。我的意思是没有其他方法。是的,我尝试过,但不幸的是,它给出了相同的答案。我建议这是更好的转换实践。尝试阅读。我的意思是没有其他方法。是的,我尝试过,但不幸的是,它给了我相同的答案。我建议这是更好的转换练习。尝试读取.Convert.ToInt32调用TryParse。它会将您从方法bro.Convert.ToInt32 invoke TryParse中解救出来。这会让你免于那种方法,兄弟。