Как получить возврат индекса минимального и максимального значения в массиве? - PullRequest
0 голосов
/ 22 апреля 2019

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

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;
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 22 апреля 2019

Вы можете создать 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: %d\nMax Index: %d\n", 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: %d\n\n", max,min);
        return index;
    }
}

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

0 голосов
/ 22 апреля 2019

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

Snipplet:

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
0 голосов
/ 22 апреля 2019

Вы должны разбить свой код на две функции: 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;
}
...