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

时间:2016-09-22 01:37:42

标签: java arrays max min

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];
            }
        }        
    }
}

我只是抓住了一件小事:我不知道如何提取最小值和最大值的位置,就像它们的索引一样,以便交换它们。我最初尝试了一些符合价值观的东西[min],但我想java并没有抓住你那么多可以理解的东西

1 个答案:

答案 0 :(得分:0)

目前,您存储在minmax计算结果中。从OOD开始这很糟糕,因为数组中的值可能同时发生变化并导致状态无效。

应该存储minIndex和maxIndex,而不是min和max。循环可能如下所示:

    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;