我是C#编程的新手,我一直在研究一个简单的程序,但遇到了障碍。当我使用Console.Read()
时,代码可以正常工作,但是它只显示用户输入的第一个字符。当我尝试使用Console.ReadLine
时,它会突出显示为 compile时间错误
无法将类型'string隐式转换为int'。
如果有人可以帮助我,我提供了以下代码。
StringBuilder idnum = new StringBuilder();
int i, count = 0;
while ((i = Console.Read() != 9)
{
if (++count <= 9);
Console.WriteLine("Error Character count exceeded");
idnum.Append((char)i);
break;
}
我需要显示输入字符的程序。
答案 0 :(得分:1)
似乎,您想读取整数 value
(例如123
);但是,天真的代码例如
int value = Console.ReadLine(); // compile time error here
不会编译,因为Console.ReadLine()
返回string
,而不是int
。您可以尝试在Parse
的帮助下int.TryParse
输入值,直到提供正确的输入为止:
int value = 0; // initialization : let compiler be happy
// keep on asking until valid input is provided
while (true) {
Console.WriteLine("Please, input an integer value");
// read input and try to parse it
if (int.TryParse(Console.ReadLine(), out value))
break; // break, if input is a valid integer
// int.TryParse returned false - parsing failed - let user know it
Console.WriteLine("Sorry, it's not an integer value. Please, try again.");
}
// from now on, value contains an integer input from user
答案 1 :(得分:0)
Console.Read()
从输入中返回 first 字符作为int
,这就是它起作用的原因。另一方面,Console.ReadLine()
返回输入string
,直到找到新的换行符为止(通常与按下Enter键相对应)。这意味着您不能如编译器所告诉的那样直接将其返回值分配给i。使用Convert
类及其方法可以将类型方便地转换为所需的类型,例如i = Convert.ToInt32(Console.ReadLine())
。请记住,如果转换失败,这可能会导致异常,即字符串不只包含数字字符。
正如乔瓦尼·帕特鲁诺(Giovanni Patruno)在评论中指出的那样,使用Console.WriteLine(...)
显示变量。从ToString()
继承而来的object
方法,就像在Java中一样,将为您隐式调用它们,以将它们显示为字符串。