Я пытаюсь написать программу, в которой я сдвигаю строки двумерного массива вверх. Это означает, что 1-ая строка становится последней, 2-ая становится 1-ой, 3-ая становится 2-ой и так далее.
Моя задача - сделать это без использования дополнительных массивов. Это должно быть сделано только с использованием объекта в качестве параметра циклической функции, приведенной в коде.
Это мой код: -
import java.util.*;
public class shift {
int[][] mat;int m,n;
shift(int mm,int nn){
m=mm;
n=nn;
mat=new int[m][n];
}
private void input(){
Scanner in=new Scanner(System.in);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
mat[i][j]=in.nextInt();
}
}
}
private void cyclic(shift s){
for(int i=0;i<n;i++)
this.mat[m-1][i]=s.mat[0][i];
int x=0;
for(int i=1;i<m;i++){
for(int j=0;j<n;j++){
this.mat[x][j]=s.mat[i][j];
}
x++;
}
}
private void display(){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
System.out.print(this.mat[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args){
Scanner in =new Scanner(System.in);
shift ob =new shift(in.nextInt(),in.nextInt());
ob.input();
ob.cyclic(ob);
ob.display();
}
}
Для ввода: -
3 3
1 2 3
4 5 6
7 8 9
Вывод: -
4 5 6
1 2 3
1 2 3
Должен быть: -
4 5 6
7 8 9
1 2 3
Я рассчитывал, когда я смещаю первый на последний в первом цикле, последнийfor p.mat также изменяется, что делает его вторым рядом. Но я подумал, что это не должно происходить при использовании объекта. Пожалуйста, помогите мне. Спасибо.