【问题标题】:How to put the largest element in an array at the end and the least at the start from user input?如何从用户输入中将最大的元素放在数组的末尾和最小的开头?
【发布时间】:2019-11-27 21:50:18
【问题描述】:

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

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      删除第二个 for 循环,然后做

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 2017-09-12
        • 2016-03-08
        • 2020-09-22
        • 2013-12-15
        • 2012-10-17
        相关资源
        最近更新 更多