我有一个问题。我试图在数组中显示最大值的索引。我能够获得最大值;但是,我不知道显示该最大值的索引。
例如,如果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;
}
}
答案 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
}