所以我输入了这个密码
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。请帮助。我以为是从笔记本电脑上来的,所以我重新启动了它,但还是没运气。
答案 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);
}