使用Console.ReadLine显示字符集时出错

时间:2019-05-13 07:56:42

标签: c# console-application

我是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;
}

我需要显示输入字符的程序。

2 个答案:

答案 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中一样,将为您隐式调用它们,以将它们显示为字符串。