需要在 java 中交换数组中的两个元素

Need to swap two elements in an array in java

import java.util.Scanner;
public class Swap {
    public static void main(String[]args){
        Scanner kb = new Scanner(System.in);
        System.out.print("How many integers? ");
        int size = kb.nextInt();

        int[] values = new int[size];
        System.out.println("Enter integers:");

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

我只是被一件小事所困扰:我不知道如何提取最小值和最大值的位置,如在它们的索引中以便交换它们。我最初尝试了 values[min] 的一些东西,但我想 java 并没有那么多地握住你的手,这是可以理解的

目前您将计算结果存储在 minmax 中。从 OOD 来看,这很糟糕,因为数组中的值可以同时更改并给你一个无效状态。

您应该存储 minIndex 和 maxIndex,而不是最小值和最大值。循环可能如下所示:

    int maxIndex = 0;
    for(int i = 0;i < values.length;i++){
        if(values[i] > values[maxIndex]){
            maxIndex = i;
        }
    }

现在可以轻松交换它们了:

int tmp = values[maxIndex];
values[maxIndex]=values[minIndex];
values[minIndex]=tmp;