2016-11-14 4 views
-2

Начинающий здесь, и мне нужна помощь в устранении этой ошибки исключения из-за пределов. Я действительно застрял! Пытается умножить матрицы. Пожалуйста, помогитеJava Array help Исключение из потока «main»

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 больше, чем матрица [к] [J] позволяет в результате чего индекс из ошибки границ.

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