首页 > 解决方案 > 如何在两个数组值之间交换?

问题描述

当用户输入的数字 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;
    }
}

标签: java

解决方案


我试过这个,找不到任何问题。为了使调试更容易,我建议您使用随机数填充您的数组。

创建一个实例Random

Random rand = new Random();

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

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

论据rand.ints是。

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

因此该调用将生成从 1 到 14 的 10 个数字(包括 1 到 14)。

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


推荐阅读