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