Java deepToString to array - matrix multiplication

时间:2016-04-27 11:07:59

标签: java arrays

有人能帮助我吗? 我正在尝试将最初使用deepToString()方法创建的字符串转换回数组。我已经尝试了很多我能在Stack Overflow上找到的东西......但没有运气。

这就是我现在所拥有的:

import java.util.*;

public class Test3 {
    static int matrix [][] = new int[2][2];

    public static int[][] matrixGenerator() {
        Random r = new Random( );
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = r.nextInt( 10000 );
            }
        }
        return matrix;
    }
    public static void main(String args[]){
        String matrix1 = Arrays.deepToString(matrixGenerator());
        String matrix2 = Arrays.deepToString(matrixGenerator());
        System.out.println(matrix1 + '\n' + matrix2);
    }
}

此输出

  

[[6030,3671],[6605,5582]]

  

[[1799,461],[1197,1012]]

这正是我需要的。现在我正在尝试使用这段代码进行矩阵乘法。

int m1rows = matrix1.length;
int m1cols = matrix1[0].length;
int m2cols = matrix2[0].length;

int[][] result = new int[m1rows][m2cols];
    for (int i = 0; i < m1rows; i++) {
       for (int j = 0; j < m2cols; j++) {
          for (int k = 0; k < m1cols; k++) {
             result[i][j] += matrix1[i][k] * matrix2[k][j];
       }
    }
 }

问题是我不能遍历数组,因为它实际上不是一个数组,而是一个字符串。这是有道理的。有人能说我怎么能循环呢?我试图将字符串转换回数组 - 但没有运气

1 个答案:

答案 0 :(得分:0)

为什么需要将矩阵转换为String然后再转换回矩阵? 你能简单地使用

吗?
public static void main(String[] args) {
        int matrix1 [][] = matrixGenerator();
        int matrix2 [][] = matrixGenerator();
        int matrix3 [][] = matrixMultiplication(matrix1, matrix2);
        String matrix1Str = Arrays.deepToString(matrix1);
        String matrix2Str = Arrays.deepToString(matrix2);
        String matrix3Str = Arrays.deepToString(matrix3);
        System.out.println(matrix1Str+'\n'+matrix2Str+'\n'+matrix3Str);
    }

    public static int[][] matrixGenerator(){
        int matrix [][] = new int[2][2];
        Random r = new Random( );
        for(int i=0; i < matrix.length; i++){
            for(int j=0; j < matrix[i].length; j++){
                matrix[i][j] = r.nextInt( 10000 );
            }
        }
        return matrix;
    }

    public static int[][] matrixMultiplication(int[][] matrix1, int[][] matrix2) {
        int m1rows = matrix1.length;
        int m1cols = matrix1[0].length;
        int m2cols = matrix2[0].length;

        int[][] result = new int[m1rows][m2cols];
            for (int i=0; i< m1rows; i++){
               for (int j=0; j< m2cols; j++){
                  for (int k=0; k< m1cols; k++){
                     result[i][j] += matrix1[i][k] * matrix2[k][j];
               }
            }
         }
        return result;
    }