2016-11-14 51 views
-2

初學者在這裏,我需要此異常越界出錯的幫助。我真的被困住了! 嘗試乘以矩陣。請幫助線程「主」中的Java Array幫助異常

package arrayPractice1; 

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

public class Array { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Type how much rows will matrix A have"); 
     int rowA = in.nextInt(); 
     System.out.println("Type how much columns will matrix A have"); 
     int colA = in.nextInt(); 
     System.out.println("Type how much rows will matrix B have"); 
     int rowB = in.nextInt(); 
     System.out.println("Type how much columns will matrix B have"); 
     int colB = in.nextInt(); 

     int[][] matrixA = new int[rowA][colA]; 
     int[][] matrixB = new int[rowB][colB]; 

     for (int i = 0; i < matrixA.length; i++) { 
      for (int j = 0; j < matrixA[i].length; j++) { 
       System.out.println("Enter value for row " + i + " and column " + j); 
       matrixA[i][j] = in.nextInt(); 
      } 
     } 

     for (int i = 0; i < matrixB.length; i++) { 
      for (int j = 0; j < matrixB[i].length; j++) { 
       System.out.println("Enter value for row " + i + " and column " + j); 
       matrixB[i][j] = in.nextInt(); 
      } 
     } 

     in.close(); 

     int[][] multiply = new int[colA][rowB]; 
     int sum = 0; 

     System.out.println("Mult. of matrixA and matrixB"); 

     for (int i = 0; i < rowA; i++) { 
      for (int j = 0; i < colB; j++) { 
       for (int k = 0; k < rowA; k++) { 
        sum = sum + matrixA[i][k] * matrixB[k][j]; 
       } 
       multiply[i][j] = sum; 
       sum = 0; 
      } 
     } 

     System.out.println(Arrays.deepToString(multiply)); 

    } 

} 
+0

什麼行?你做了什麼來調試它? – Carcigenicate

回答

0
for (int i = 0; i < rowA; i++) { 
     for (int j = 0; i < collB; j++) { 
      for (int k = 0; k < rowA; k++) { 
       sum = sum + matrixA[i][k] * matrixB[k][j]; 
      } 
      multiply[i][j] = sum; 
      sum = 0; 
     } 
    } 

這裏要檢查我是否小於collB,雖然這是真的,你正在在J爲矩陣[K] [J]允許導致索引越界的錯誤更大。

相關問題