如何从用户输入的末尾开始将最大的元素放入数组中,而从用户输入的开始开始将最小的元素放在数组中?

问题描述 投票:0回答:2

我已经提取了数组中最大和最小的元素。我试图弄清楚如何将最大的元素交换为数组中的最后一个元素,并将最小的元素交换为数组中的第一个数字,但这对我不起作用。我在做什么错?

import java.util.Scanner;
public class SmallestLargest
{
    public static void main (String []args)
    {
        Scanner input = new Scanner (System.in);
        int[] array1 = new int [input.nextInt()];

        for (int i = 0; i < array1.length; i++)
        {
            array1[i] = input.nextInt();
        }
        int max = array1[0];
        int least = array1[0];
        for (int i = 0; i < array1.length; i++)
        {
            if(max < array1[i])
            {
                max = array1[i];
            }
            else if(least > array1[i])
            {
                least = array1[i];
            }
        }
        for (int i = 0; i < array1.length; i++)
        {
            int x = array1[0];
            array1[0] = max;
            array1[array1.length-1] = x;
            System.out.print(array1[i] + " ");
        }

            input.close();
    }
}
java arrays input computer-science swap
2个回答
0
投票

删除第二个for循环,然后执行

array1[0] = max;
array1[array1.length-1] = least;

0
投票

这就是您所需要的,您必须跟踪最大/最小值所在的索引。

public static void main(String[] args) {

            Scanner input = new Scanner(System.in);
            int[] array1 = new int[input.nextInt()];
            int maxIndex = -1;
            int minIndex = -1;


            for (int i = 0; i < array1.length; i++) {
                array1[i] = input.nextInt();
            }
            int max = array1[0];
            int least = array1[0];
            for (int i = 0; i < array1.length; i++) {
                if (max < array1[i]) {
                    max = array1[i];
                    maxIndex = i;
                } else if (least > array1[i]) {
                    least = array1[i];
                    minIndex = i;
                }
            }

            int temp = array1[0];
            array1[0] = max;
            array1[maxIndex] = temp;

            temp = array1[array1.length - 1];
            array1[array1.length - 1] = least;
            array1[minIndex] = temp;

            for(int a: array1){
                System.out.println(a);
            }
            input.close();
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.