【问题标题】:Need to swap two elements in an array in java需要在java中交换数组中的两个元素
【发布时间】:2017-01-30 10:26:32
【问题描述】:
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 并没有那么容易握住你的手,这是可以理解的

【问题讨论】:

  • min and max 将是实际值...您需要在每个循环中保存 i 变量以交换它们。例如minIndex = imaxIndex = i。你的价值观在哪里。

标签: java arrays max min


【解决方案1】:

目前您将计算结果存储在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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多