使用array.Max()后,如何获取数组最大值对应的索引而非值?
如何获取数组最大值对应的下标?
你完全不用纠结,其实有几种很直接的实现方式,刚好能解决你的需求:
快速实现(适用于单个最大值的场景)
直接用Array.IndexOf()方法配合你已经用到的Max()就行,一行代码就能拿到下标:int maxIndex = Array.IndexOf(arrayname, arrayname.Max());注意:数组默认是0索引的,如果你要显示类似「第15小时」这种1开头的序号,记得把结果加1,也就是
maxIndex + 1。不过如果数组里有多个相同的最大值,这个方法只会返回第一个出现的那个下标。灵活遍历(支持多最大值场景)
如果担心数组里有多个相同的最大值,或者需要自定义逻辑(比如找最后一个出现的最大值),手动遍历数组会更靠谱:int[] arrayname = // 你的数组 int maxValue = arrayname.Max(); int targetIndex = -1; for (int i = 0; i < arrayname.Length; i++) { if (arrayname[i] == maxValue) { targetIndex = i; // 如果要找第一个最大值,这里加break;要找最后一个就去掉break,继续循环 break; } } // 输出1开头的序号 Console.WriteLine($"最大值对应的是第 {targetIndex + 1} 小时");
这两种方法都很简单,完全不需要复杂的额外操作,根据你的实际场景选就行~
内容的提问来源于stack exchange,提问作者William. Foster
相关产品推荐
相关产品推荐

