Как повернуть массив на 90 градусов java
Перейти к содержимому

Как повернуть массив на 90 градусов java

Как повернуть двумерный массив в Java

Название этого вопроса расплывчато, но, надеюсь, это прояснит ситуацию.

По сути, то, что я ищу, — это решение для ротации этого набора данных. Эти данные настроены определенным образом.

Вот пример того, как будут выглядеть ввод и вывод:

«3» представляет количество столбцов и строк, которые будут использоваться. Если вы введете число «4», вам будет разрешено ввести 4 набора из 4 целых чисел.

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

У меня проблема в том, что я не знаю, как повернуть данные. Я могу вращать только углы, но не стороны. Вот что пока делает мой код:

  • взять ввод каждой строки и превратить их в строки
  • разделить эти строки на отдельные символы
  • хранить эти символы в массиве

Я просто не знаю, как сравнивать эти символы и, в конце концов, повернуть данные.

Любая помощь будет оценена по достоинству! Мы ответим на любые вопросы.

Подробное описание проблемы находится здесь (проблема J4). Это просто вызов, который я поставил перед собой для практики на конкурсе в следующем году, поэтому ответ на него не «испортит» вопрос, но на самом деле поможет мне научиться.

sergiykatriuk / Blinov2C7.java

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

package OOP_HW_L1 ;
import java . util . Arrays ;
import java . util . Random ;
import static java . util . Arrays .*;
/**
* Created by Sergiy Katriuk on 24.10.17.
* Повернуть матрицу на 90 (180, 270) градусов против часовой стрелки.
*/
public class Blinov2C7 <
public static void main ( String [] args ) <
int [][] arr = new int [ 3 ][ 5 ];
fillArray ( arr );
showArray ( arr );
System . out . println ();
showArray ( rotateLeft ( arr , 3 ));
>
public static int [][] fillArray ( int [][] arr ) <
Random rand = new Random ();
for ( int i = 0 ; i < arr . length ; i ++) <
for ( int j = 0 ; j < arr [ i ]. length ; j ++) <
arr [ i ][ j ]= rand . nextInt ( 100 );
>
>
return arr ;
>
public static void showArray ( int [][] arr ) <
for ( int i = 0 ; i < arr . length ; i ++) <
for ( int j = 0 ; j < arr [ i ]. length ; j ++) <
System . out . print ( arr [ i ][ j ] + "\t" );
>
System . out . println ();
>
>
public static int [][] rotateLeft ( int [][] arr , int x ) <
int [][] newarr = new int [ arr [ 0 ]. length ][ arr . length ];
x = x — ( x / 4 ) * 4 ;
if ( x != 0 ) <
for ( int j = 0 ; j < arr . length ; j ++) <
for ( int k = arr [ j ]. length — 1 ; 0 <= k ; k —) <
newarr [ arr [ j ]. length — k — 1 ][ j ] = arr [ j ][ k ];
>
>
x —;
> else newarr = arr ;
return ( x != 0 ? rotateLeft ( newarr , x ): newarr );
>
>

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Повернуть массив по часовой стрелке

У меня есть двумерный массив, мне нужно повернуть на 90 градусов по часовой стрелке, однако я продолжаю получать arrayindexoutofbounds.

9 ответов

Я не понимаю логику ваших петель — не должно быть

за вычетом того, идет ли каждый индекс вверх, как i здесь, или вниз, как j здесь (и о том, нужно ли «перевернуть» одно или оба в задании, e.g использование arr.length-1-j вместо простого j на одной стороне = в задании; -), так как arr размеры arr.length by arr[0].length и наоборот newArray , мне кажется, что первый индекс arr (вторая на newArray ) должен быть тот, который охватывает диапазон от 0 до arr.length-1 включен, а другой диапазон для другого индекса.

это своего рода» базовый размерный анализ «(за исключением того, что» измерение «используется в другом смысле, чем обычно идет с» размерным анализом», который относится к физическим измерениям, т. е. времени, массе, длине и т. д.). Проблема «переворачивания» и каждого цикла вверх или вниз зависит от визуализации именно того, что вы имеете в виду, и я не самый большой «мысленный визуализатор», поэтому я подумайте, в реальной жизни я бы попробовал различные варианты этой «транспозиции оси», пока не попаду в тот, который подразумевается;-).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *