2016-04-27 2 views
1

Может кто-нибудь мне помочь? Я пытаюсь преобразовать строку, которая была изначально создана с использованием метода deepToString(), обратно в массив. Я пробовал почти все, что мог найти в Stack Overflow & hellip; но не повезло.Java deepToString для массива - умножение матрицы

Это то, что я прямо сейчас:

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, 3761], [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]; 
     } 
    } 
} 

Проблема в том, что я не могу пройти через массив, потому что это не массив, это строка. Это имеет смысл. Может ли кто-нибудь сказать мне, как я могу зациклиться? Я попытался преобразовать строку обратно в массив - но не повезло

+0

Если это строка, вы не можете создать массив, разделив на [], а? – Alex

+0

разделить его, а затем разобрать его на целые т т ваши манипуляции :) –

+0

Могу ли я спросить, как, пожалуйста? Просто мой мозг сейчас «заблокирован» :( – Selyst

ответ

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; 
    } 
+0

Вы - звезда! Это было именно то, что мне нужно! спасибо! – Selyst

Смежные вопросы