бесконечный переворот матрицы на 90,-90,0 Java

149
12 июля 2019, 02:10

Напишите программу, которая загружает матрицу и выполняет указанные преобразования указанного массива на 90, -90, 90 градусов. Преобразования будут введены в 0, -1,1. Ввод другого номера завершает обработку текущего задания. Моя матрица не сохраняет данные с предыдущей матрицы, то есть выводит:

Переворот 1

3 6 9 
2 5 8 
1 4 7 

Переворот 1

3 6 9 
2 5 8 
1 4 7 

А мне нужно:

input:

Ввод строк: 3
Ввод столбцов: 3

output:

Matrix
1 2 3
4 5 6 
7 8 9
input: 
Переворот
1
output: 
3 6 9
2 5 8
1 4 7
input: 
Переворот
1
output: 
9 8 7 
6 5 4 
3 2 1
input: 
Переворот
0
output: 
9 8 7 
6 5 4 
3 2 1
public class Transformace {
    private static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("Ввод строк");
        int pr = sc.nextInt();
        System.out.println("Ввод столбцов");
        int ps = sc.nextInt();
        int[][] array = new int[pr][ps];
        Matrix(array);
        while (true) {
            System.out.println("Переворот");
            int turn = sc.nextInt();
            if (turn == 1) {
                Pocitani(turnToLeft(array));
            } else if (turn == -1) {
                Pocitani(turnToRight(array));
            } else if (turn == 0) {
                Pocitani(array);
            } else {
                break;
            }
        }
    }

    public static int[][] Matrix(int[][] array) {
        int s = 0;
        System.out.println("Matrix");
        for (int i = 0; i < array.length; i++, System.out.println()) {
            for (int j = 0; j < array[i].length; j++) {
                array[i][j] = s + 1;
                s = s + 1;
                System.out.print(array[i][j] + " ");
            }
        }
        return array;
    }
    public static int[][] turnToRight(int[][] array) {
//        System.out.println("Rotovana matice");
        int result[][] = new int[array[0].length][array.length];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                result[j][array.length - i - 1] = array[i][j];
            }
        }
        return result;
    }
    public static int[][] turnToLeft(int[][] array) {
//        System.out.println("Rotovana matice");
        int result[][] = new int[array[0].length][array.length];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                result[array[i].length - j - 1][i] = array[i][j];
            }
        }
        return result;
    }

    public static void Pocitani(int[][] array) {
        for (int i = 0; i < array.length; i++, System.out.println()) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + " ");
            }
        }
    }
}

Прошу помочь с этим.

Answer 1
while (true) {
        System.out.println("Переворот");
        int turn = sc.nextInt();
        if (turn == 1) {
            array = turnToLeft(array);
            Pocitani(array);
        } else if (turn == -1) {
            array = turnToRight(array);
            Pocitani(array);
        } else if (turn == 0) {
            Pocitani(array);
        } else {
            break;
        }
    }
READ ALSO
Добавление собственного Control в SceneBuilder (JavaFX)

Добавление собственного Control в SceneBuilder (JavaFX)

Можно ли добавить собственный элемент управления в SceneBuilder, что бы кроме стандартных (например TextField) в списке было MyTextField?

123
Подсчет уникальных чисел в массиве

Подсчет уникальных чисел в массиве

Программа должна подсчитывать уникальные чисел в массиве, например

124
Поиск повторяющихся чисел в графе

Поиск повторяющихся чисел в графе

Дан массив A длины (n+1), содержащий натуральные числа от 1 до nНайти любой повторяющийся элемент за время O(n), не изменяя массив и не используя...

136
Как устранить Утечку Памяти

Как устранить Утечку Памяти

Здорова всемЗа ранее я извиняюсь, Я не силён на русском языке

160