как поменять местами значения двух массивов? - PullRequest
1 голос
/ 30 апреля 2020

Когда пользователь вводит число 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 Ответ

1 голос
/ 30 апреля 2020

Я попробовал это и не смог найти ничего плохого. Чтобы упростить отладку, я рекомендую вам заполнить ваш массив случайными числами.

Создайте экземпляр Random

Random rand = new Random();

и назначьте вывод переменной массива.

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

Аргументами rand.ints являются.

  • 10 - количество элементов
  • 1 - начало диапазона чисел
  • 15 - конец диапазона (не включая этот номер)

Таким образом, при вызове будет сгенерировано 10 номеров от 1 до 14 включительно.

Одной из возможных проблем может быть дублирование номеров в ваш массив и найти правильный, чтобы поменять. Но я не смог воспроизвести ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...