簡體   English   中英

需要在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];
            }
        }        
    }
}

我只是陷入了一件小事:我不知道如何提取最小值和最大值的位置,就像在它們的索引中那樣以便交換它們。 我本來是按照值[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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM