这段求回形数的代码哪里出问题了,运行输入一个数之后就没有后续了,如何解决?

img

img

img


这段求回形数的代码哪里出问题了,运行输入一个数之后就没有后续了;


int k=1;
        System.out.println("输入");
        Scanner scanner = new Scanner(System.in);
        int ren = scanner.nextInt();
        int s=ren*ren;
        int arrs[][]=new int[ren][ren];
        int i=0;int j=0;
        for (int m = 1; m <= s; m++) {
            if (k==1){
                if (j<ren&&arrs[i][j]==0) {
                    arrs[i][j]=m;
                    j++;
                }else {
                    i++;j--;m--;k=2;
                }
            }else if (k==2){
                if (i<ren&&arrs[i][j]==0){
                    arrs[i][j]=m;
                    i++;
                }else {
                    i--;m--;k=3;j--;
                }
            }else if (k==3){
                if (j>=0&&arrs[i][j]==0){
                    arrs[i][j]=m;
                    j--;
                }else {
                    k=4;j++;i--;m--;
                }
            }else if (k==4){
                if (i>0&&arrs[i][j]==0){
                    arrs[i][j]=m;
                    i--;
                }else {
                    k=1;i++;j++;m--;
                }
            }
        }
        for (int g=0;g<arrs.length;++g){
            for (int p = 0; p < arrs[g].length; ++p) {
                System.out.println(arrs[g][p]);
            }
        }
    }

k==3是内部条件改为if (j>=0&&arrs[i][j]==0),还有最后按g,p遍历。