代码如下。 当我在控制台中输入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);
}
}
}
答案 0 :(得分:5)
您需要使用Console.ReadLine()
,而不是Console.Read()
。这将返回string
,它将正确转换为数字2
。
t = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(t);
答案 1 :(得分:1)
'2'
的ASCII码是50,依此类推。
答案 2 :(得分:1)
如果仔细查看此表,您会发现'2'
的符号实际上具有值50
Console.Read()
返回一个整数,更具体地说,它返回一个表示你输入的第一个字符的整数,所以说我放入a
,Console.Read()
将吐出97
,如果我输入A
它会给我65
,如果我写AB
它也会给我65
,因为它会读取流中的第一个字符,并且返回其整数值
相反,你应该做的是使用Console.ReadLine()
它接受任何输入,并将其作为字符串返回,然后你可以解析为整数,所以如果我给它2
它将会返回"2"
,然后您可以通过Convert.ToInt32()
运行并获取整数。