Koshkasobaka
@Koshkasobaka

Как поменять местами строки со столбцами в матрице Java?

Здравствуйте, не получается написать алгоритм, который бы менял местами строки и столбцы в двумерном массиве. Помогите, пожалуйста. Пока удалось только поменять первую строку с первым столбцом:
for (int i = 0; i < array.length; i++) {
                int j = 0;
                int box = board[i][j];
                board[i][j] = board[j][i];
                board[j][i] = box;
                j++;
            }
  • Вопрос задан
  • 215 просмотров
Решения вопроса 1
Bavashi
@Bavashi
Попробуйте так:

for (int i = 0; i < a.length; i++) {
            for (int j = i; j < a[i].length; j++) {
                int c = 0;
                c = a[i][j];
                a[i][j] = a[j][i];
                a[j][i] = c;
            }
        }


Полный код для теста

public static void main(String[] args) {
        int[][] a = new int[3][3];
        Random rnd = new Random();
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length;j++) {
                a[i][j] = rnd.nextInt(10) + 1;
            }
        }
        for (int i = 0; i < a.length; i++, System.out.println()) {
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j] + " ");
            }
        }
        for (int i = 0; i < a.length; i++) {
            for (int j = i; j < a[i].length; j++) {
                int c = 0;
                c = a[i][j];
                a[i][j] = a[j][i];
                a[j][i] = c;
            }
        }
        System.out.println();
        for (int i = 0; i < a.length; i++, System.out.println()) {
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j] + " ");
            }
        }
  }

Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@fapsi
Безработный
Для начала объявить и инициализировать новый массив, где количество строк равно количеству элементов (столбцов) в строке первоначального массива, а количество элементов (столбцов), соответственно, количеству строк (проверка входного массива на null и прочее на Ваше усмотрение).
int[][] board = new int[array[0].length][array.length]


Ну а далее этот массив заполнить
private int[][] rotateArray(int[][] array) {
	int[][] board = new int[array[0].length][array.length]
	
	for(int i=0; i<array.length; i++) {
		for(int j=0; j<array[i].length; j++) {
			board[j][i] = array[i][j];
		}
	}
	
	return board;
}
Ответ написан
@TAZAQ
Не знаком с Java, но у вас постоянно j обнуляется и выше 1 не идёт, сделайте в 2 цикла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы