Как получить возврат индекса минимального и максимального значения в массиве?

#java #arrays #methods #return

#java #массивы #методы #Возврат

Вопрос:

Я делаю свою домашнюю работу, где я должен получить максимальный и минимальный индекс в массиве. Я уже сделал это, но я не могу понять, как вернуть этот индекс.

 package MaxMinArrayIndex.bozhko;

public class MaxMinArrayIndex {
public static void main(String[] args) {
    gettingIndex();
}

private static int gettingIndex(int[]) {

    int[] myArray = {35, 2, 64, -18, 1000, 10000};
    int max = myArray[0];
    int indexForMax = 0;
    for (int i = 0; i < myArray.length; i  ) {
        int score = myArray[i];
        if (max < score) {
            max = score;
            indexForMax = i;
        }
    }
    int min = myArray[0];
    int indexForMin = 0;
    for (int i = 0; i < myArray.length; i  ) {
        int score = myArray[i];
        if (min > score) {
            min = score;
            indexForMin = i;
        }
    }
}
  

Комментарии:

1. Вы могли бы вернуть Array или List с двумя Integers . Первым всегда является min. Второе всегда является максимальным. Вы также могли бы использовать Pair . Вы также можете создать свой собственный Pair подобный объект, который содержит максимальное и минимальное значения.

2. Вы не можете возвращать две переменные одновременно. Вы можете разделить его на две функции. Один для максимума и один для минимума. Или, если вы хотите сохранить одну функцию, вы можете создать массив размером 2 — int[] indexes = new int[2] и поместить в позицию 0 индекс для минимума, а в позицию 1 индекс для максимума и return indexes

Ответ №1:

Вы должны разделить свой код на две функции: getMinIndex() и getMaxIndex() .

Что-то вроде:

 static int getMinIndex(int[] array) {
    int min = array[0];
    int indexForMin = -1;
    for (int i = 0; i < array.length; i  ) {
        int score = array[i];
        if (min > score) {
            min = score;
            indexForMin = i;
        }
    }

    return indexForMin;
}

static int getMaxIndex(int[] array) {
    int max = array[0];
    int indexForMax = 0;
    for (int i = 0; i < array.length; i  ) {
        int score = array[i];
        if (max < score) {
            max = score;
            indexForMax = i;
        }
    }

    return indexForMax;
}
  

Ответ №2:

Лучший подход — разделить ваши методы на два.

Фрагмент:

 class Main {
  public static void main(String[] args) {
    int[] myArray = {35, 2, 64, -18, 1000, 10000};
    int maxIndex = getMaxIndex(myArray);
    System.out.println("Max Index : "  maxIndex);

    int minIndex = getMinIndex(myArray);
    System.out.println("Min Index : "  minIndex);
  }

private static int getMaxIndex(int[] myArray) {

    int max = myArray[0];
    int indexForMax = 0;
    for (int i = 0; i < myArray.length; i  ) {
        int score = myArray[i];
        if (max < score) {
            max = score;
            indexForMax = i;
        }
    }
    return indexForMax;
  }

private static int getMinIndex(int[] myArray) {
    int min = myArray[0];
    int indexForMin = 0;
    for (int i = 0; i < myArray.length; i  ) {
        int score = myArray[i];
        if (min > score) {
            min = score;
            indexForMin = i;
        }
    }
    return indexForMin;
  }
}
  

Вывод:

 Max Index : 5
Min Index : 3
  

Ответ №3:

Вы можете создать new array длину 2 и сохранить индекс в этом массиве. После этого вы можете return использовать этот массив.

Точно так же, как это:

 public class MaxMinArrayIndex 
{
    public static void main(String[] args) 
    {
        int[] indexes = new int[2];
        indexes = gettingIndex();
        System.out.printf("Min Index: %dnMax Index: %dn", indexes[0], indexes[1]);
    }

    private static int[] gettingIndex() 
    {
        int[] index = new int[2];
        int[] myArray = {35, 2, 64, -18, 1000, 10000};
        int max = myArray[0];
        int indexForMax = 0;
        for (int i = 0; i < myArray.length; i  ) {
            if (max < myArray[i]) {
                max = myArray[i];
                index[0] = i;
            }
        }

        int min = myArray[0];
        int indexForMin = 0;
        for (int i = 0; i <     myArray.length; i  ) {
            if (min > myArray[i]) {
                min = myArray[i];
                index[1] = i;
            }
        }
        System.out.printf("MAX: %d nMIN: %dnn", max,min);
        return index;
    }
}
  

Примечание: Ваш код не будет учитывать случай , когда в массиве есть 2 равных минимальных или максимальных числа .