java - 如何根据用户输入将数组中最大的元素放在末尾,最小的元素放在开头?

标签 java arrays input computer-science swap

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

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

最佳答案

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

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

关于java - 如何根据用户输入将数组中最大的元素放在末尾,最小的元素放在开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59078917/

相关文章:

java - 为什么有些java类在构造时好像有返回值?

java - ant 到 maven 迁移 maven - jar 构建

c - 尝试从 DataSet 扫描数组,但在 C 中继续出现总线错误

java - 需要扫描仪输入阵列

c - 在 C 中输入,特例?

java - 如果我不知道需要执行多少次,如何多次调用子类的方法?

java - 为 Java 游戏组织资源

javascript - Javascript 中未定义的数组参数

c - 使用 malloc 作为 typedef char name[300][300]? (C)

java - 仅输入到终端的底行