Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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_For Loop_Multidimensional Array_Transpose - Fatal编程技术网

有人能解释这个转置矩阵的Java代码吗?

有人能解释这个转置矩阵的Java代码吗?,java,for-loop,multidimensional-array,transpose,Java,For Loop,Multidimensional Array,Transpose,我面前有一段java代码,但我不明白toString方法和转置方法中发生了什么 我是说for循环中发生了什么 如果有人能帮我,我将不胜感激 这是另一种方法 public static int[][] transpose(int[][]m){ int[][] temp = new int[m[0].length][m.length]; for (int i = 0; i < m.length; i++){ for (int j = 0; j < m

我面前有一段java代码,但我不明白toString方法转置方法中发生了什么

我是说for循环中发生了什么

如果有人能帮我,我将不胜感激

这是另一种方法

public static int[][] transpose(int[][]m){



    int[][] temp = new int[m[0].length][m.length];
    for (int i = 0; i < m.length; i++){
        for (int j = 0; j < m[0].length; j++){
            temp[j][i] = m[i][j];
        }

    }
        return temp;
}
公共静态int[][]转置(int[][]m){
int[][]temp=newint[m[0].length][m.length];
对于(int i=0;i
这是密码

package question5;

import java.util.Arrays;
import java.util.Scanner;

public class Matrix {

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        int[][] multarray = new int[4][4];

        System.out.print("Enter your Numbers between 1 and 16");
        for(int i = 0 ; i < multarray.length; i++){
            for(int j = 0 ;j < multarray.length; j++){

                multarray[i][j] = sc.nextInt();
            }
        }

        for(int row = 0 ; row<multarray.length; row++){
            for(int col = 0; col< multarray.length; col++){
                System.out.print(multarray[row][col] + " ");
            }
            System.out.println();




        }
        System.out.println();
        System.out.println();
        System.out.println("Transpose Array is : ");


        System.out.println(toString(transpose(multarray)));
    }

    public static int[][] transpose(int[][]m){

        int rows = m.length;
        int cols = m[0].length;

        int t[][] = new int [cols][];
        for(int trow = 0 ; trow < cols; trow++){
            t[trow] = new int[rows];
        }

        for(int row = 0; row< rows;row++){
            for(int col = 0; col<cols; col++){
                int tcol = rows-row-1;
                int trow = cols-col-1;
                t[trow][tcol] = m[row][col];
            }
        }
        return t;
    }

    public static String toString(int[][] m) {
        StringBuilder text = new StringBuilder();
        for (int row = 0; row < m.length; row++) {
            int r[] = m[row];
            for (int col = 0; col < r.length; col++) {
                if (col > 0) text.append(", ");
                text.append(r[col]);
            }
            text.append("\n");
        }
        return text.toString();
    }
}
package问题5;
导入java.util.array;
导入java.util.Scanner;
公共类矩阵{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int[]multarray=新int[4][4];
系统输出打印(“输入1到16之间的数字”);
for(int i=0;i转置方法的“心脏”:

int tcol = rows-row-1;
int trow = cols-col-1;
给定一对表示方阵中单元坐标的
(行、列)
,它们在转置矩阵中计算其目标坐标,这只是矩阵主对角线上的反射

这是一个例子:


(0,0)

循环有9个
,你指的是哪一个?你是否尝试过在调试器中单步执行代码以了解程序的功能,或者询问编写程序的人?你了解什么是“转置”吗意思是?很明显,一个人转置一个矩阵,然后创建它的文本表示,你不明白的到底是什么?我不知道你为什么要使用toString(int[][])关于转置矩阵,但不是原始矩阵。转置我不明白它是如何工作的,我也不知道这是否是一个愚蠢的问题,但我需要这个帮助。谢谢你看一看转置矩阵做什么的可视示例。让我看看我是否理解得很好。因此,一旦我得到矩阵的对角线,我就把列行来了???@mmmmmm是的,这就是转置矩阵的全部内容。@dasblinkenlight你能看到我的编辑问题并解释转置方法和此方法之间的区别吗???@mmmm你的方法将矩阵翻转到不同的对角线上(升序,而不是降序。我没有画原点
(0,0)
在我的图片上-它位于左下角(请参见编辑)。您的代码将进行镜像转换。