Bir sorunum daha var

kodun bir kısmı istediğim gibi çalışmıyor ve nasıl düzeltirim bilemedim. 4 girdiğimde her şeyin sola kayması gerekirken en alt satırda bir sıkıntı oluyor çünkü for döngüsünde en alt satırı bir kere hareket ettirdikten sonra geçiyor. Benim o satıra bir kere daha dönmem laızm for döngüsünde fakat nasıl yapacağımı bilmiyorum. Bahsettiğim kod şu şekilde.
public static void main(String[] args) {
int[][] dizi={
{ 0 , 0 , 2 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 2 , 0 , 0 },
{ 4 , 0 , 0 , 0 , 0 , 4 },
{ 0 , 0 , 0 , 2 , 0 , 0 },
{ 2 , 0 , 0 , 0 , 2 , 0 },
{ 0 , 0 , 2 , 4 , 0 , 2 },
};
for(int i=0;i<dizi.length;i++) {
for(int j=0;j<dizi
.length;j++)
System.out.print(" "+dizi[j]);
System.out.println();
}dongu(dizi);
}
public static void dongu (int x[][]){
Scanner input=new Scanner(System.in);
while(true){
System.out.println("2
OWN - 4:LEFT - 6:RİGHT - 8:UP");
System.out.println("Please choose a direction and enter direction number: ");
int a=input.nextInt();
switch(a){
case 2:
kaydır2(x);
break;
case 4:
kaydır4(x);
break;
case 6:
kaydır6(x);
break;
case 8:
kaydır8(x);
break;
default:
System.out.println("This is not direction number.Please enter 2,4,6 or 8 to specify the direction you choose.");
dongu(x);
}
for(int i=0;i<x.length;i++) {
for(int j=0;j<x.length;j++)
System.out.print(" "+x[j]);
System.out.println();
}
}
}
public static void kaydır2 (int x[][]) {
for(int m=x.length-1 ; 0<m ; m--){
for(int n=0 ; n<x[m].length; n++){
if(x[m][n]==0 && x[m-1][n]!=0){
x[m][n]=x[m-1][n];
x[m-1][n]=0;
}
else
continue;
}
}
for(int m=0 ; m<x.length-1; m++){
for(int n=0 ; n<x[m].length; n++){
if( x[m+1][n]==0 && x[m][n]!=0){
x[m+1][n]=x[m][n];
x[m][n]=0;
}
else
continue;
}
}
}
public static void kaydır4 (int x[][]) {
for(int j=0 ; j<x.length ; j++){
for(int k=0 ; k<x[j].length-1 ; k++){
if(x[j][k]==0 && x[j][k+1]!=0){
x[j][k]=x[j][k+1];
x[j][k+1]=0;
}
else
continue;
}
}
for(int j=0 ; j<x.length ; j++){
for(int k=x[j].length-1; 0<k ;k--){
if(x[j][k-1]==0 && x[j][k]!=0){
x[j][k-1]=x[j][k];
x[j][k]=0;
}
else
continue;
}
}
}
public static void kaydır6(int x[][]){
for(int j=0 ; j<x.length ; j++){
for(int k=x[j].length-1; 0<k ;k--){
if(x[j][k]==0 && x[j][k-1]!=0){
x[j][k]=x[j][k-1];
x[j][k-1]=0;
}
else
continue;
}
}
for(int j=0 ; j<x.length; j++){
for(int k=0 ; k<x[j].length-1 ; k++){
if(x[j][k+1]==0 && x[j][k]!=0){
x[j][k+1]=x[j][k];
x[j][k]=0;
}
else
continue;
}
}
}
public static void kaydır8(int x[][]){
for(int j=x.length-1 ; 0<j ; j--){
for(int k=0 ; k<x[j].length ; k++){
if(x[j-1][k]==0 && x[j][k]!=0){
x[j-1][k]=x[j][k];
x[j][k]=0;
}
else
continue;
}
}
for(int j=0 ; j<x.length-1 ; j++){
for(int k=0; k<x.length ;k++){
if(x[j][k]==0 && x[j+1][k]!=0){
x[j][k]=x[j+1][k];
x[j+1][k]=0;
}
else
continue;
}
}
}