TransWikia.com

Как написать обмен местами элементов в массиве?

Stack Overflow на русском Asked by Kamran on August 31, 2020

В методе swap нужно написать так код, чтобы когда я задавал определенные числа a и b (позиции в массиве), он менял их местами. Например, массив 9 2 3 5 8 8 8 8 3 4. Я задаю 1 и 2 – это значит, что числа на этих позициях меняются друг с другом. То есть становится 9 3 2 5 8 8 8 8 3 4.

public class App {
    int[] arr = new int[10];

    void start() {
        sluchaynoye();
        print();
        swap(0, 1);
    }

    void print() { //
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

    int ran() { //
        return (int) (Math.random() * 10);
    }

    void sluchaynoye() { //
        for (int i = 0; i < arr.length; i++) {
            arr[i] = ran();
        }
    }

    void swap(int a, int b) {
    }
}

2 Answers

В нормальном виде это должно выглядеть так :

public class App {
    
    private final int[] arr;
    
    public static void main(String[] args) {
        
        //рандомный массив на 10 элементов, минимальное значение чисел в массиве - 0, максимальное - 10
        App app = new App(10, 0, 10);
        //а можем создать экземпляр класса, работающий с массивом, который мы передаем в конструкторе, а не с рандомным
        //App app = new App(new int[]{5,3,1,0,8});
        
        //выводим в консоль, для этого переопределяем метод toString()
        System.out.println(app);
        
        app.swap(0, 1);
                
        System.out.println(app);
    }

    public App(int[] arr) {
        this.arr=arr;
    }
    
    public App(int size, int origin, int bound) {
        this(new java.util.Random().ints(size, origin, bound).toArray());
    }
    
    public void swap(int index1, int index2) {
        int tmp = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = tmp;
    }
    
    @Override
    public String toString() {
        //поскольку для массива метод toString() не переопределен, используем утилитный метод вывода массива в консоль
        return java.util.Arrays.toString(arr);
    }
    
}

если что-то непонятно - задавайте вопросы

Answered by Дмитрий on August 31, 2020

void swap (int a, int b) {
    int c = arr[a];  // записываем первонач. значение arr[a] в переменную с 
    arr[a] = arr[b]; // в arr[a] записываем arr[b]
    arr[b] = c;      // в arr[b] записываем с (первонач. значение arr[a])
}

Answered by azlov on August 31, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP