Вывести на экран числа расположенные между минимальным и максимальным элементом

Написала код, но вывелся весь массив, и минимальным, и с максимальным элементом.

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

package ggig;

public class Fmassiv2 {

public static void main(String[] args) {
    // TODO Auto-generated method stub

int array[]= {1,2,3,4,5};
int min=0;
int max=0;
min=array[0];
max=array[0];

for (int i=0; i<array.length; i++) {
    if (array[i]>max) {
        max=array [i];}
    if (array[i]<min) {
        min=array [i];}

    System.out.println (array[i]);
     }
   }

}

Ответы (1 шт):

Автор решения: Sergey Chernikov

Вот код программы, которая будет работать правильно при условии, что у вас нет повторяющихся элементов в массиве. Я использовал тип double для большей точности и чтобы не делать приведение типов в цикле for. В консоль сначала выводятся все значения жлементов массива, а после слова "output" - значения элементов, которые находятся между минимальным и максимальным значениями. Если есть вопросы, задавайте.

{
    double max = Double.NEGATIVE_INFINITY;
    double min = Double.POSITIVE_INFINITY;
    int maxId = 0;
    int minId = 0;
    
    double[] massive = new double[20];
    
    for(int i = 0; i < massive.length; i++)
    {
        massive[i] = Math.random() * 50;
        if(max < massive[i])
        {
            max = massive[i];
            maxId = i;
        }
        if(min > massive[i])
        {
            min = massive[i];
            minId = i;
        }
        System.out.println(massive[i]);
    }

    
    System.out.println("\noutput:\n");

    int start = 0;
    int end = 0;
    if(minId < maxId)
    {
        start = minId;
        end = maxId;
    }
    else 
    {
        start = maxId;
        end = minId;
    }
    
    for(int i = start; i <= end; i++)
        System.out.println(massive[i]);
}
→ Ссылка