首页 > 解决方案 > 如何在 C# 中检查和更改数组中的值?

问题描述

我正在做一个非常简单的井字游戏项目,我在其中检查用户输入是否在数组中(查找从 1 到 9 的整数),如果不是,我想更改该用户输入的索引。下面是代码,不知道我做错了什么。CallSquare() 返回一个 int。

        int [] numbersPlayed = {0,0,0,0,0,0,0,0,0};
        int callResult;
        int totalPlayed = 0;

        while (totalPlayed != 10)
        {
            
            callResult = CallSquare();
        
            foreach (int i in numbersPlayed)
            {
                if (numbersPlayed.Contains(callResult))
                {
                    Console.WriteLine("\n\nError, number already in array");
                    break;
                }

                else 
                {
                    numbersPlayed.SetValue(callResult, i);
                }
        
            }

            totalPlayed++;
        }

基本上,输入后它的作用是给我上面的错误消息,即使我输入了一个介于 1 和 9 之间的整数,然后只更改我在第一个输入中输入的索引号中的值(例如,如果我在第一个输入上输入 1,它只会更改后续输入的第一个索引)。请帮忙?

编辑:我想做的是记录已播放的数字。我认为这样的阵列是要走的路,但如果你有更好的解决方案,我正在听。

标签: c#arraystic-tac-toe

解决方案


我认为,你最好使用 a List

List<int> numbersPlayed = new List<int>();
int callResult;
int totalPlayed = 0;

while (totalPlayed < 10)
{
    
    callResult = CallSquare();

    if( numbersPlayed.Contains(callResult) )
    {
         Console.WriteLine("\n\nError, number already in array");
    }
    else
    {
          numbersPlayed.Add(callResult);
    }

    totalPlayed++;
}

推荐阅读