由于 int 的索引导致的 C# 数组问题

C# array issue due to indexing of int

我对此还很陌生,正在努力学习。我正在努力尝试创建一个循环来查找数组中的最大值。我不确定我做错了什么。我到处搜索,看到几个人按照我的方式做,但不知道我错过了什么……

static void Main(string[] args)
    {
        int[] Numbs = new int[10];
        Numbs[0] = 56;
        Numbs[1] = 77;
        Numbs[2] = 23;
        Numbs[3] = 12;
        Numbs[4] = 88;
        Numbs[5] = 59;
        Numbs[6] = 97;
        Numbs[7] = 33;
        Numbs[8] = 38;
        Numbs[9] = 64;

        string[] Names = new string[10] {"John", "George", "Henry", "Larry", "Bart", "Luke", "Tim",
            "Frank", "Conor", "Joe"};

       

        FindMax(Numbs[9],9);
       
    }

    static int FindMax(int arrayNumbs, int arrayNumbsLength)
    {
        int Greatest = -1;

        for (int Count = 0; Count <= arrayNumbsLength; Count++)
            if (arrayNumbs[Count] > Greatest)
            {
                Console.WriteLine(Count);
                Greatest = arrayNumbs;
                Console.WriteLine(Greatest); 
            }
            return Greatest;

我可以看出您的代码存在一些问题:

  • 您的方法将第一个参数定义为整数 (int arrayNumbs),它应该是 int[] arrayNumbs,因为您传递的是数组,而不是单个整数
  • 在您的函数调用 FindMax(Numbs[9], 9) 中,您传递一个整数作为第一个参数而不是数组(这不会给您带来错误,因为它是您定义方法的方式,请参见上文)。第二个参数是谎言,你的数组大小是 10,而不是 9(记住第一个元素有索引 [0]
  • 在您的方法中,您想将整数分配给您的变量,而不是整个数组(这会给您带来错误)。应该说 Greatest = arrayNumbs[Count]

最基本的变化是:

static int FindMax(int[] arrayNumbs)
{

    ...
    for (int Count = 0; Count < arrayNumbs.Length; Count++)
    ...
}

其他就好了。有一些方法可以让它变得更好,但我猜这是一项学校作业,你最终会完成的。

您可以使用 List() 而不是数组类型。列表是动态的,会自动扩展。在下面的示例中,我创建了 numbs 列表并使用 LINQ 获取最大值。

var numbs = new List<int>
{
    56, 77, 23, 12, 88, 59, 97, 33, 38, 65
};

var max = numbs.Max();