0

我有个问题。我正在尝试在数组中显示最大值的索引。我能够获得最大值;但是,我不知道要显示该最大值的索引。

例如,如果 index [3] 的值为 5 并且是数组中的最大元素,它将打印:

value[3] = 5 是最大的元素

我怎么做?

    import java.util.Scanner;

    public class ArrayExample 
    {
            public static void main(String[] args) 
        {
            //Question 1
            int values[] = new int[5] ;
            System.out.println("Please enter 5 values for this array: ");
            Scanner keyboard = new Scanner(System.in);


              System.out.println("Maximum Value = " + getMaxIndex(values) + getMaxValue(values));  
        }

        public static int getMaxValue(int[] values){  
            int maxValue = values[0];  
            for(int i=0;i<values.length;i++){  
                if(values[i] > maxValue){  
                    maxValue = values[i];  
            }  
            }  
        return maxValue;  
    } 
    public static int getHighestMonth(int[] values) {
            int highest = 0;
            for (int i = 0; i < 5; i++) {
                if (values[i] > values[highest]) {
                    highest = i;
                }
            }
            return highest;
        }

}
4

3 回答 3

1

希望下面的代码可以帮助你

public static int getMaxIndex(int[] values) {
    int maxValue = values[0];
    int maxIndex = 0;
    for (int i = 0; i < values.length; i++) {
        if (values[i] > maxValue) {
            maxValue = values[i];
            maxIndex = i;
        }
    }
    return maxIndex;
}
于 2012-12-02T17:09:23.783 回答
1

您创建一个名为 position 的实例变量:

public class ArrayExample 
    {
    private static int position = 0;
     ...

    }

在您的 getMaxValue 中,您还可以将位置与 maxValue 一起保存:

    public static int getMaxValue(int[] values){  
        int maxValue = values[0];  
        for(int i=0;i<values.length;i++){  
            if(values[i] > maxValue){  
                maxValue = values[i]; 
                position = i;
        }  
        }  
    return maxValue;  
} 

然后你在外面打印它:

System.out.println("Maximum Value = " + getMaxIndex(values) + "in position" + position);  

或者另一种方法是返回位置而不是 maxValue:

public static int getMaxValue(int[] values){  
            int maxValue = values[0];  
            int position = 0;
            for(int i=0;i<values.length;i++){  
                if(values[i] > maxValue){  
                    maxValue = values[i]; 
                    position = i;
            }  
            }  
        return position;  
    } 

在你之外:

int position = getMaxIndex(values);
System.out.println("Maximum Value = " + values[position] + "in position" + position);
于 2012-12-02T17:10:28.293 回答
1

你可以使用AbstractMap.SimpleEntry

public static SimpleEntry<Integer, Integer> getMaxValue(int[] values){  
    int maxValue = Integer.MIN_VALUE;
    int maxIndex = -1;
    for(int i=0;i<values.length;i++){  
        if(values[i] >= maxValue){  
            maxValue = values[i];
            maxIndex = i;
        }  
    }
    return new SimpleEntry<Integer, Integer>( maxIndex, maxValue);
}

public static void main(String[] args) {
    SimpleEntry<Integer, Integer> maxEntry = getMaxValue( new int[]{1,2,3});

    System.out.println( "value["+ maxEntry.getKey() + "] = " + maxEntry.getValue() + " is the largest element");
    //value[2] = 3 is the largest element

}
于 2012-12-02T17:12:23.957 回答