C#如何让单个Console.ReadLine更改多个整数

C#如何让单个Console.ReadLine更改多个整数,c#,C#,我对编码还不熟悉,想在学习的同时编写一个简短的游戏来练习。目前,我一直在想如何让用户输入一个文本来改变多个变量。以下是迄今为止的代码: Console.WriteLine("Assign SPECIAL points.Note that SPECIAL points cannot be changed once added:"); int SPECIALpoints; SPECIALpoints = 12; int ST; ST = 5;

我对编码还不熟悉,想在学习的同时编写一个简短的游戏来练习。目前,我一直在想如何让用户输入一个文本来改变多个变量。以下是迄今为止的代码:

Console.WriteLine("Assign SPECIAL points.Note that SPECIAL points cannot be changed once added:");
        int SPECIALpoints;
        SPECIALpoints = 12;
        int ST; ST = 5;
        int PE; PE = 5;
        int EN; EN = 5;
        int CH; CH = 5;
        int IN; IN = 5;
        int AG; AG = 5;
        int LU; LU = 5;

        while (SPECIALpoints > 0)
            {
            /*    Console.WriteLine("Current STRENGTH: {0}. Adjust points: ", ST);
                ST = ST + Console.ReadLine(), SPECIALpoints = SPECIALpoints - Console.ReadLine();
                Console.WriteLine("Available points: {0}", SPECIALpoints);
                */
                Console.WriteLine("Current PERCEPTION: {0}. Adjust points: ", PE);
                PE = PE + Console.ReadLine();

                Console.WriteLine("Current ENDURANCE: {0}. Adjust points: ", EN);
                EN = PE + Console.ReadLine();

                Console.WriteLine("Current CHARISMA: {0}. Adjust points: ", CH);
                CH = CH + Console.ReadLine();

                Console.WriteLine("Current INTELLIGENCE: {0}. Adjust points: ", IN);
                IN = IN + Console.ReadLine();

                Console.WriteLine("current AGILITY: {0}. Adjust points: ", AG);
                AG = AG + Console.ReadLine();

                Console.WriteLine("Current LUCK: . Adjust points: ", LU);
                LU = LU + Console.ReadLine();
另外,我得到了一个CS0029,“不能隐式地将类型'string'转换为'int'”,但是我不知道我在哪里把整数列为字符串

谢谢你的帮助

Console.ReadLine()返回一个字符串值,您需要将ReadLime的所有实例更改为:

Convert.ToInt32(Console.ReadLine())

注意,这假设您的客户机将输入一些C#知道要解释为整数的内容。如果输入不匹配(例如“foo”),转换将失败,您的程序也将失败

为了帮助您了解如何执行此操作,请尝试以下代码:

void Main()
{
    Dictionary<SpecialPoint, int> specialPoints = new Dictionary<SpecialPoint, int>()
    {
        { SpecialPoint.STRENGTH, 5 },
        { SpecialPoint.PERCEPTION, 5 },
        { SpecialPoint.ENDURANCE, 5 },
        { SpecialPoint.CHARISMA, 5 },
        { SpecialPoint.INTELLIGENCE, 5 },
        { SpecialPoint.AGILITY, 5 },
        { SpecialPoint.LUCK, 5 },
    };

    AskSpecialPoint(specialPoints, SpecialPoint.STRENGTH);
    AskSpecialPoint(specialPoints, SpecialPoint.PERCEPTION);
    AskSpecialPoint(specialPoints, SpecialPoint.ENDURANCE);
    AskSpecialPoint(specialPoints, SpecialPoint.CHARISMA);
    AskSpecialPoint(specialPoints, SpecialPoint.INTELLIGENCE);
    AskSpecialPoint(specialPoints, SpecialPoint.AGILITY);
    AskSpecialPoint(specialPoints, SpecialPoint.LUCK);
}

private void AskSpecialPoint(Dictionary<SpecialPoint, int> specialPoints, SpecialPoint specialPoint)
{
    int points = -1;
    do
    {
        Console.WriteLine("Current {0}: {1}. Adjust points: ", specialPoint.ToString(), specialPoints[specialPoint]);
    } while (!int.TryParse(Console.ReadLine(), out points));
    specialPoints[specialPoint] += points;
}

public enum SpecialPoint
{
    STRENGTH,
    PERCEPTION,
    ENDURANCE,
    CHARISMA,
    INTELLIGENCE,
    AGILITY,
    LUCK,
}
void Main()
{
Dictionary specialPoints=新字典()
{
{SpecialPoint.STRENGTH,5},
{特殊点感知,5},
{SpecialPoint.耐力,5},
{SpecialPoint.CHARISMA,5},
{SpecialPoint.INTELLIGENCE,5},
{SpecialPoint.AGILITY,5},
{SpecialPoint.LUCK,5},
};
AskSpecialPoint(特殊点、特殊点、强度);
AskSpecialPoint(specialPoints,SpecialPoint.PERCEPTION);
AskSpecialPoint(特殊点,特殊点,耐力);
AskSpecialPoint(specialPoints,SpecialPoint.CHARISMA);
AskSpecialPoint(specialPoints,SpecialPoint.INTELLIGENCE);
AskSpecialPoint(specialPoints,SpecialPoint.AGILITY);
AskSpecialPoint(specialPoints,SpecialPoint.LUCK);
}
专用void AskSpecialPoint(字典专用点、专用点专用点)
{
积分=-1;
做
{
WriteLine(“当前{0}:{1}.Adjust points:”,specialPoint.ToString(),specialPoints[specialPoint]);
}而(!int.TryParse(Console.ReadLine(),out points));
特殊点[特殊点]+=点;
}
公共枚举特殊点
{
力量
感知,
耐力
魅力
情报,,
敏捷性
幸运的是,
}

使用
int.TryParse
。仅供参考,您不需要这样做:
int-ST;ST=5。您可以这样做:
intst=5
我不知道我在哪里把整数列为字符串。
”你不知道。它抱怨的恰恰相反:字符串被视为整数。这是因为
Console.ReadLine()
返回一个字符串。您需要
Convert()
Parse()
该字符串值。谢谢您的提示!我将使用下面列出的convert()方法。有没有一种快速简便的方法可以让输入同时调整两个整数?我目前的方法不起作用。我不知道我是不是还没有学会怎么做,或者我只是在某个地方有一个打字机。谢谢你的提示!当我在谷歌上快速搜索答案时,我已经看到了Convert方法的列表,但是没有一个答案真正解释了它的功能。我想我现在明白它是怎么工作的了。有没有一种快速简便的方法可以让输入同时调整两个整数?我目前的方法不起作用。我不知道我是不是还没有学会怎么做,或者我只是在某个地方有一个打字机。讨论中的区域是注释部分。