【问题标题】:How to find index of max array value?如何找到最大数组值的索引?
【发布时间】:2016-08-21 00:40:05
【问题描述】:

这是我目前所拥有的

 double[] num = {1.9, 2.9, 3.4, 3.5};
 double max = num [0];
    for (int i = 1 ; i < num.length ; i++)
    {
        if (num [i] > max)
            max = num [i]; 
    }
    System.out.println ("Max is " + max);

我需要找到最大值的索引。我尝试通过在 if 语句中放置一个句子来打印索引,我还尝试通过将 i 存储到另一个变量中。他们都没有工作。

【问题讨论】:

  • 为什么num[i] 之间有一个空格?也许这就是它的原因。你是编译错误还是什么?
  • @Gendarme 不,空间不会造成任何问题。问题不在于数组,我只需要找到一种方法来输出最大值的索引。
  • 所以,您想要最大条目的 index,并且您将 [i] 的 value 存储到 max 变量中。也许考虑设置一个`int idx = 0, and then in the loop instead of max = num[i]`,将idx设置为num[i]?
  • 空格不会引起任何问题,但最好不要放置额外的空格。您需要从 i=0 开始,而不是 i=1,因为数组索引从 0 开始,而不是 1。
  • @Gremash 没有必要从 0 开始。max = num[0]; 负责。

标签: java arrays


【解决方案1】:

您需要跟踪最大值及其索引。

public class GetMaxIndex {
    public static void main(final String[] args) {
        final double[] numbers = { 1.9, 2.9, 3.4, 3.5 };
        double maxNumber = numbers[0];
        int maxIndex = 0;
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] > maxNumber) {
                maxNumber = numbers[i];
                maxIndex = i;
            }
        }
        System.out.println("Max is " + maxNumber);
        System.out.println("Index of max is " + maxIndex);
    }
}

【讨论】:

  • @Gremash 它没有。
  • 天哪,伙计们,你们不明白吗?由于它已经由索引 0 初始化,您可以跳过它。
  • 嗯...为什么你把变量叫做maxNumer而不是maxNumber?一些秘密的魔法,你不被允许与我们凡人分享?
  • @JSox 如果 Java 是您的第一语言,那么它是一种很好的学习语言,因为它具有强大的类型。愉快地过渡到 Javascript!
  • @Gendarme 不,因为我正在使用 Eclipse 的重构,它会重命名所有出现的地方,所以一个错字到处都会变成“错字”。
【解决方案2】:
double[] num = {1.9, 2.9, 3.4, 3.5};
double max = num[0];
int    maxIndex = 0;
for (int i = 1 ; i < num.length ; i++)
{
   if (num[i] > max)
  {
    maxIndex = i
    max = num[i]; 
  }
}
System.out.println("Max is " + max);
System.out.println("Max index is + maxIndex);

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 2014-05-19
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2018-05-05
    • 2022-01-12
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多