我正在运行一个非常简单的程序,它只是提示用户输入一个数字,现在只需在屏幕上打印即可。但由于某些我不知道的原因,我输入的数字似乎增加了48号。
例如: 我输入2 它推出50
我是否有某种基本法律监督,或者我在我的代码中犯了某种错误
我是初学者,如果你没有注意到
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int Num;
Console.WriteLine("Please Input Number of Rows you want to make in your pyrimid: ");
Num = Console.Read();
Console.WriteLine(Num);// Just to check if it is getting the right number
Console.Read();//This is Here just so the console window doesn't close when the program runs
}
}
}
编辑:讨厌是一个麻烦但现在得到num = int.Parse(Console.Read());
的这个错误因为'int.Parse(string)'的最佳重载方法匹配有一些无效的参数。这是否意味着我需要一个重载方法?
答案 0 :(得分:5)
Console.Read
会返回char
,因此当您将其转换为int
时,您将获得2
的 50 的ASCII码!你应该解析为int而不是(隐式)转换它:
Num = int.Parse(Console.Read());
注意:
int.TryParse
Num
更改为num
。答案 1 :(得分:1)
Console.Read
返回字符代码,而不是字符本身。
char num = (char)Console.Read();
Console.WriteLine(int.Parse(num.ToString()));
此代码并不理想,但它显示了正在发生的事情。由于您希望输入数字,因此您也可以使用
int num = Console.Read() - 48;
答案 2 :(得分:0)
Console.Read
读取标准输入的读取字节。
2
的ASCII值为50
您需要解析从控制台读取的值
Num = Int32.Parse(Console.Read()); // or Num = int.Parse(Console.Read());