Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将二维阵列从行转换为块_Java_Arrays_2d_Task_Sudoku - Fatal编程技术网

Java 将二维阵列从行转换为块

Java 将二维阵列从行转换为块,java,arrays,2d,task,sudoku,Java,Arrays,2d,Task,Sudoku,我试图在这个代码中工作几个星期。 我需要将二维数组中的行和列转换为块。 它应该适用于大小为n*n的任何矩阵。(我已经得到了数组的大小) 例如: 这: 我总是陷入困境 这就是我写的代码: sqrtN is the size. 在上面提到的情况下,这里的sqrtN是3 ` public static int[][] blocks(int[][] matrix, int sqrtN) { int[][] blocks = matrix; int i = 0;

我试图在这个代码中工作几个星期。 我需要将二维数组中的行和列转换为块。 它应该适用于大小为n*n的任何矩阵。(我已经得到了数组的大小) 例如: 这:

我总是陷入困境

这就是我写的代码:

        sqrtN is the size.
在上面提到的情况下,这里的sqrtN是3

`   public static int[][] blocks(int[][] matrix, int sqrtN) {   
    int[][] blocks = matrix;
    int i = 0;
    int counter = 1;
    while(counter+1<sqrtN){ 
        int n = sqrtN;//"n" will the size of the matrix.
        while(n<blocks.length){ 
            int t = counter;
            int j = 0;
            while(t<blocks.length){
                int k = n;
                if(t==counter & i%n==0 & i>0)
                    j= t-1;
                if(j%sqrtN==0)
                    i = 0;
                while(k==n || k%sqrtN!=0){
                    int temp = blocks[t][i];
                    blocks[t][i] = blocks[j][k];
                    blocks[j][k] = temp;
                    i= i+1;
                    k= k+1; 
                }
                j=j+sqrtN;
                t=t+sqrtN;          
            }
            n= n+sqrtN;
            counter= counter+1;

        }
        i=counter;
    }
        return blocks;`
`公共静态int[][]块(int[][]矩阵,int sqrtN){
int[][]块=矩阵;
int i=0;
int计数器=1;

而(计数器+1无需执行复杂逻辑。请尝试使用:

public static int[][] blocks(int[][] matrix, int sqrtN) {   
    int[][] blocks = matrix;
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix.length; j++){ 
            blocks[i][j] = (i % sqrtN * sqrtN) + (j % sqrtN + 1) ;
    }
}
        return blocks;
}
公共静态int[][]块(int[][]矩阵,int sqrtN){
int[][]块=矩阵;
对于(int i=0;i
无需执行复杂的逻辑。请尝试使用:

public static int[][] blocks(int[][] matrix, int sqrtN) {   
    int[][] blocks = matrix;
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix.length; j++){ 
            blocks[i][j] = (i % sqrtN * sqrtN) + (j % sqrtN + 1) ;
    }
}
        return blocks;
}
公共静态int[][]块(int[][]矩阵,int sqrtN){
int[][]块=矩阵;
对于(int i=0;i
for(int i=0;i
for(int i=0;i
谢谢!您能试着向我解释一下方法以及您是如何考虑的吗?我建议您以您的示例为例,尝试输入值并进行试运行。我希望这会有所帮助。这一切都是关于“(i%sqrtN*sqrtN)+(j%sqrtN+1)”逻辑哈哈谢谢。是的,我试过运行我的代码。我明白为什么它不起作用。哦,伙计。它应该适用于任何类型的数字。比如{{5,12,4,6}{46,1,2,3}{1565,2,11}.还有ant sizethank你!你能试着向我解释一下这个方法吗?你是怎么想的?我建议你只是拿你的例子,试着放一些值,然后做一个试运行。我希望这会有帮助。这都是关于“(I%sqrtN*sqrtN)+(j%sqrtN+1)”的逻辑哈哈谢谢。是的,我试过运行我的代码。我明白为什么它不工作。哦,伙计。它应该适用于任何类型的数字。比如{{5,12,4,6}{46,1,2,3}{1565,2,11}和蚂蚁大小