java - 如何交换数组中最大的数字和最后一个数字?

标签 java arrays algorithm swap jcreator

我正在尝试创建一个程序,要求用户输入一个数字,该数字表示将在数组中生成多少个 1-100 之间的随机数。然后我希望最大的数字与最后一个数字交换,最小的数字与第一个数字交换。到目前为止,这是我的代码:

import java.util.Scanner;
import java.util.Random;

public class smallbig
{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random randomGenerator = new Random();

        int num = scan.nextInt();
        int[] myArray = new int[num];

        for (int i = 0; i < myArray.length; ++i) {
            int randomInt = randomGenerator.nextInt(100);
            myArray[i] = randomInt;
        }
        int smallest = myArray[0];
        int largest = myArray[0];

        for (int i = 1; i < myArray.length; i++) {
            if (myArray[i] > largest) {
                largest = myArray[i];
            }
            if (myArray[i] < smallest) {
                smallest = myArray[i];
            }
        }

        for (int j = 1; j < myArray.length; j++) {
            int first = myArray[0];
            myArray[0] = smallest;
            smallest = first;

            int temp = largest;
            int last = myArray.length;
            myArray[last - 1] = largest;
            temp = myArray[last - 1];

            System.out.print(myArray[j] + " ");
        }
    }
}

我似乎无法正确交换数字。我创建了一个循环,它从生成的数字中确定最小和最大的数字,并将这些数字存储起来。然后我创建了一个循环来执行必要的交换,但我似乎无法让它正常工作。它适用于将最大数字与最后一个数字交换,但大多数时候(并非总是)输出的最后一个数字也存在于数组中的其他地方。这就是我的意思:

input: 10
output: 62 48 34 0 91 14 64 60 91

我知道有一种我可以使用的交换器方法,但我想通过手动交换数字来实现。感谢任何帮助,谢谢。

最佳答案

你犯了一个简单的错误,当你执行交换时你的循环应该从'0'开始

for (int j = 0; j < myArray.length; j++) {
        int first = myArray[0];
        myArray[0] = smallest;
        smallest = first;

        int temp = largest;
        int last = myArray.length;
        myArray[last - 1] = largest;
        temp = myArray[last - 1];

        System.out.print(myArray[j] + " ");

关于java - 如何交换数组中最大的数字和最后一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40773229/

相关文章:

java - SQL 开发人员 ORA-29531

java - CSV输入到java中的二维数组

php - php中的词袋算法

python - 为什么我尝试查找最大子数组的算法不起作用?

java - 检查数组是否是回文

java - 获取 Java 月份的名称

javascript - 如何有条件地将数组项添加到另一个项目数组中?

algorithm - 查找可以使用提供的食材烹制的食谱

java - 单线程延迟启动

c++ - 检查数组的索引是否为空