如何在两个数组值之间交换?

时间:2020-04-30 01:10:06

标签: java

如果用户输入的数字1小于数字2,则交换无效, 但是当数字1大于数字2时,它起作用。我不明白为什么会这样。我将不胜感激一些建议或帮助。


package javaapplication36;

public class JavaApplication36 {
    static Scanner s = new Scanner(System.in);

    // main method
    public static void main(String[] args) {
        int[] arr = new int[10];
        input(arr);
        System.out.println("Enter n1 :");
        int n1 = s.nextInt();
        System.out.println("Enter n2 : ");
        int n2 = s.nextInt();
        display(arr);
        int temp = 0;
        int index_a = index(arr, n1);
        int index_b = index(arr, n2);
        if (index(arr, n1) != -1 && index(arr, n2) != -1) {
            temp = arr[index_a];
            arr[index_a] = arr[index_b];
            arr[index_b] = temp;
        }
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static void display(int[] arr) {
        for (int i : arr) {

            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static void input(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println("Enter number : " + (i + 1));
            arr[i] = s.nextInt();
        }
    }

    public static int index(int[] arr, int n) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == n)
                return i;
        }
        return -1;
    }
}

1 个答案:

答案 0 :(得分:1)

我尝试了此操作,但未发现任何错误。为了简化调试过程,建议您使用随机数填充数组。

创建Random

的实例
Random rand = new Random();

并将输出分配给您的数组变量。

arr = rand.ints(10,1,15).toArray();

rand.ints的参数是

  • 10-元素数
  • 1-数字范围的开始
  • 15-范围的结尾(不包括该数字)

该呼叫将生成10个数字(从1到14)(包括1到14)。

任何问题的一种可能是在阵列中重复数字并找到要交换的正确数字。但是我无法重现该错误。