如何在 c# 中将字符串数据存储到字符串数组

本文关键字:字符串 数据 存储 数组 | 更新日期: 2023-09-27 17:56:56

另一个我似乎无法解决的愚蠢的家庭作业问题。我正在尝试将用户输入字符串数据存储到字符串数组中,但我收到一个错误"无法隐式将类型"字符串"转换为类型"int",尽管事实上我的代码(据我所知)没有任何内容表明它需要是一个 int 类型。我在方括号之间的最后一行收到错误:玩家名称 [玩家名称] = 玩家名称;

编辑:我知道我的变量和语句搞砸了,一旦我弄清楚数组问题发生了什么,我就会解决这个问题。

    static void InputData(string [] playerNames, int [] playerScore, ref int numPlayers)
    {
        int numberPlayers = 0;
        if (!numberPlayers.Equals("Q"))
            for (numPlayers++; numPlayers < 100;)
                Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
                string playerName = Console.ReadLine();
                playerNames [playerName] = playerName; 

编辑:这是我这部分的解析代码 static void InputData(string [] playerNames, int [] playerScores, ref int numPlayers) { 字符串播放器名称;

        for (int i = 0; i != numPlayers; i++)
            {
                Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
                playerName = Console.ReadLine();
                if (!playerName.Equals("Q"))
                    Console.WriteLine("No further user input needed...'n");
                else
                    playerNames[i] = playerName;
                    Console.WriteLine("Enter the score of the player...");
                    int playerScore = Convert.ToInt32(Console.ReadLine());
                    playerScores[i] = playerScore;

我的下一个问题是,下面的用户建议数组存储整数。我必须存储多达 100 个玩家姓名和 100 个玩家分数。你们有什么建议?

如何在 c# 中将字符串数据存储到字符串数组

这是

不正确的:

playerNames [playerName] = playerName

因为 playerName 是一个字符串,不能用作数组的索引。

你的意思是:

playerNames [numPlayers] = playerName

当 numberPlayer 是对int的引用时,这不起作用:

!numberPlayers.Equals("Q")

。因为"Q"不是int.

错误在此行中

playerNames[playerName] =playerName.

PlayerNames 是一个字符串类型数组,要访问该数组的元素,您必须提供一个整数值,并且您正在提供一个字符串值。

playerNames[int type value here] =playerName

基本的for循环应如下所示:

for (int i = 0 ; i != numPlayers ; i++) {
    Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
    string playerName = Console.ReadLine();
    playerNames [i] = playerName;
    ... // The rest of your loop goes here
}

这假设玩家数量固定。如果要使其可扩展,请为名称创建一个List<string>,为分数创建一个List<int>。更好的是,将名字和分数组合在一个班级中。

函数的签名假定两个数组将被扩展。虽然这在 .NET 中是可能的,但它并不是例行公事。

以下是我在不为播放器引入新类的情况下更改您的函数的方法:

static void InputData(List<string> playerNames, List<int> playerScore) {
    // The caller is assumed to have assigned non-null lists to the two arguments
    int i = 0;
    while (true) {
        Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
        string playerName = Console.ReadLine();
        if (playerName == "Q" || playerName == "q") break;
        playerNames.Add(playerName);
        ... // The rest of your loop goes here
    }
}

如果预先分配包含 100 个项目的数组,请按如下所示更改代码:

numPlayers = 0;
while (numPlayers = 0 ; numPlayers < 100 ; numPlayers++) {
    Console.WriteLine("Enter the name of the player...Enter '"Q to exit...");
    string playerName = Console.ReadLine();
    playerNames[numPlayers] = playerName;
    ... // The rest of your loop goes here
}