C#中的整数值出错

时间:2014-01-01 20:27:35

标签: 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("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);
         } 

        }
    }

3 个答案:

答案 0 :(得分:5)

您需要使用Console.ReadLine(),而不是Console.Read()。这将返回string,它将正确转换为数字2

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

enter image description here

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

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

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