显示索引数组

时间:2012-12-02 17:06:32

标签: java arrays

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

例如,如果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;
        }

}

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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);

答案 2 :(得分: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

}