【问题标题】:Multiply two matrices using threads使用线程将两个矩阵相乘
【发布时间】:2013-09-27 01:18:34
【问题描述】:

我正在尝试使用 Java 中的线程将两个矩阵相乘。我不知道我的代码发生了什么,因为它没有显示矩阵的乘积,而是显示 0 或我的 MatrixC 的内存位置。这是我的线程乘法代码:

public class ThreadMatrix extends Thread {
    int ini, end, counter;

    // Interval for each thread
    public ThreadMatrizes(int ini, int end) {
        this.init = ini; // Position of the matrix where the thread starts
        this.end = end; // Position of the matrix where the thread ends
    }

    public void run(){

        int i = 0, j = 0, k = 0;

        for (i = init; i < end; i++){
            for (j= init; j < end; j++){
                for (k = init; k < end; k++){
                    MatrixMultiplication.matrixC[i][j] += MatrixMultiplication.matrixA[i][k]*MatrixMultiplication.matrixB[k][j];
                }
            }
        }
        System.out.println(MatrixMultiplication.matrixC[i][j]);
    }
}

System.out.prinln(MatrixMultiplication.matrixC[i][j]); 中我尝试在没有[i][j] 的情况下运行,输出是一个内存位置。我该怎么办?

【问题讨论】:

  • 数组没有被覆盖的toString() 方法。使用Arrays.toString()
  • 您是否知道要打印矩阵的single 元素,因为您是在所有循环之外进行的?
  • 我修好了,PM 77。谢谢

标签: java multithreading matrix matrix-multiplication multiplication


【解决方案1】:

要打印多维数组,您可以使用Arrays.deepToString。该方法是为打印多维数组而设计的。

System.out.println(Arrays.deepToString(MatrixMultiplication.matrixC));

或者,如果您想要更自定义的打印输出,您可以编写自己的循环,例如

for (i = init; i < end; i++){
  for (j= init; j < end; j++){
       System.out.print(MatrixMultiplication.matrixC[i][j] + " ");
  }
    System.out.println();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多