C# C中的整数值出错#

C# C中的整数值出错#,c#,C#,代码如下。 当我在控制台中输入t=2的值时,它会被打印为50,同样地,它会打印51,52的3,4,以此类推 class Program { static void Main(string[] args) { int h = 0; int t = 0; Console.WriteLine("Hello India!!"); Console.WriteLine("E

代码如下。 当我在控制台中输入t=2的值时,它会被打印为50,同样地,它会打印51,52的3,4,以此类推

class Program
    {
        static void Main(string[] args)
        {
            int h = 0;
            int t = 0;
            Console.WriteLine("Hello India!!");
            Console.WriteLine("Enter the no. of test cases");

            t= Convert.ToInt32(Console.Read());
            Console.WriteLine(t);

            for (int n = 1; n < t;n++ )
            {
                 Console.WriteLine("Enter the String");
                 String str = Console.ReadLine();

                for (int i = 0; i < str.Length; i++)
                {
                if ((str[i] == 'A') || (str[i] == 'D') || (str[i] == 'O') || (str[i] == 'P') || (str[i] == 'Q') || (str[i] == 'R'))
                    h = h + 1;
                else if (str[i] == 'B')
                    h = h + 2;
                else
                    continue;
                }
                Console.WriteLine(h);
         } 

        }
    }
类程序
{
静态void Main(字符串[]参数)
{
int h=0;
int t=0;
Console.WriteLine(“你好,印度!!”);
Console.WriteLine(“输入测试用例的编号”);
t=Convert.ToInt32(Console.Read());
控制台写入线(t);
对于(int n=1;n
您需要使用
Console.ReadLine()
,而不是
Console.Read()
。这将返回一个
字符串
,该字符串将正确转换为数字
2

t = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(t);

'2'
的ASCII码是50,依此类推。

如果仔细查看此表,您会发现
'2'
的符号实际上具有值
50

Console.Read()
返回一个整数,更具体地说,它返回一个整数,表示您输入的第一个字符,因此假设我输入
a
Console.Read()
将吐出
97
,如果我输入
A
它会给我
65
,如果我写
AB
它也会给我
65
,因为它读取流中的第一个字符,并返回其整数值


相反,您应该做的是使用
Console.ReadLine()
它接受任何输入,并将其作为字符串返回,然后您可以将其解析为整数,因此如果我给它
2
,它将返回
“2”
,然后您可以通过
Convert.ToInt32()
运行该命令,并从中获取整数。

到底出了什么问题?问题是什么?输入t=2的值将在Console.Writeline(t)中打印t=50的值,因此循环运行50次