0

我对这段代码有疑问。

        Console.WriteLine("What is your name?");
        string PlayerName = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine(PlayerName);

我要做的是让计算机读取您输入的姓名,并询问您是否是您的姓名。虽然有一个例外,但在我输入我的名字后立即。Convert.ToInt32 不是我应该使用的,我想我的问题是我应该放什么。

我是编程新手,我什至不确定它是否称为 unicode。对不起。

4

4 回答 4

2

Console.ReadLine() 将返回一个字符串,无需进行任何转换:

    Console.WriteLine("What is your name?");
    string PlayerName = Console.ReadLine();
    Console.WriteLine(PlayerName);
于 2017-01-25T22:33:02.083 回答
2

Convert.ToInt32()如果您没有在其中传递有效的整数值,则抛出转换错误。因此,您需要优雅地检查它并获得整数值。为此,您Int32.TryParse(input, out val)可以获得整数值。

前任 :

int value;
if(Int32.TryParse(your_input, out value))
{
// if pass condition, then your input is integer and can use accordingly
}

因此,如果您只想打印整数值,您的程序将是这样的:

    Console.WriteLine("What is your name?");
    var value = Console.ReadLine();
    int intVal;
    if(Int32.TryParse(value, out intVal))
    {
        Console.WriteLine(intVal);
    }

如果您只想打印从 ReadLine 方法获得的内容,则可以:

  Console.WriteLine("What is your name?");
  Console.WriteLine(Console.ReadLine());
于 2017-01-25T22:34:44.130 回答
1

Convert.ToInt32(String)“将数字的指定字符串表示形式转换为等效的 32 位有符号整数”。您收到错误是因为您没有在控制台中输入整数值。

你的PlayerName变量是 type string,返回值Console.ReadLine()已经是 a string,所以不需要任何转换。

于 2017-01-25T22:33:16.997 回答
0

如果您正在处理 Unicode 字符,则可能必须像这样设置正确的编码

Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;

Console.WriteLine("What is your name?");
string PlayerName = Console.ReadLine();
Console.WriteLine(PlayerName);
于 2017-01-25T22:33:56.747 回答