2014-11-24 4 views
0

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

Ошибка общения:

Исключение в потоке "основного" java.lang.ArrayIndexOutOfBoundsException: 3

на Matrix.main (Matrix.java:17)

import java.util.Scanner; 

public class Matrix { 
    public static void main(String[] args) { 

     Scanner data = new Scanner(System.in); 
     final int w=3,k=2; 
     int[][] x = {       //Tworzy tablice 4x3 (3x2, bo a1=[0,0]) 
       {1,12,3},      //x[0,0]=1 x[0,1]=12 x[0,2]= 3 
       {45,4,1,0},      //x[1,0]=45 x[1,1]=4 x[1,2]= 1 x[1,3]=0 
       {2,3}       //x[2,0]=2 x[2,1]=3 
     }; 
     int[][] matX = new int[w][k];   //tab[w,k] 

     for(int i=0 ; i<matX.length ; i++) { 
      for(int j=0 ; j<matX[w].length ; j++) { 
       matX[i][j] = data.nextInt(); 
      } 
     } 

     for(int i=0 ; i<matX.length ; i++) { 
      for(int j=0 ; j<matX[w].length ; j++) { 
       System.out.println(matX[i][j]); 
       if(j==matX[w].length-1) { 
        System.out.println(System.lineSeparator()); 
       } 
      } 
     } 
     data.close(); 
    } 
} 
+2

Матрица повсюду. Все вокруг. Даже сейчас, в этом самом посте. Вы можете увидеть его, когда включаете компьютер и входите в Stackoverflow. Вы можете почувствовать это, когда идете в школу ... когда идете делать домашнее задание ... Это мир, который был наложен на ваши глаза, чтобы ослепить вас от истины. Правда, что ты раб, Сетцо. Как и все остальные, вы родились в рабстве. В тюрьму, которую вы не можете попробовать или увидеть или прикоснуться. Тюрьма для вашего ума. ЧТО, что не так с вашей программой. Это и то, что написал rgettman. – hfontanez

ответ

2

Вы используете длину w как индекс в matX, что само по себе является недопустимым индексом. Изменение

j<matX[w].length 

к:

j<matX[i].length 

используя внешнюю переменную i цикла.

+0

Работы, спасибо: D – Setzo

0

Попробуйте использовать matX[i] и не matX[w] внутри ваших петель, здесь какой-то код, чтобы начать с:

import java.util.Scanner; 

public class Matrix { public static void main(String[] args) { 

    Scanner data = new Scanner(System.in); 
    final int w=3,k=2; 
    int[][] x = {       //Tworzy tablice 4x3 (3x2, bo a1=[0,0]) 
      {1,12,3},      //x[0,0]=1 x[0,1]=12 x[0,2]= 3 
      {45,4,1,0},      //x[1,0]=45 x[1,1]=4 x[1,2]= 1 x[1,3]=0 
      {2,3}       //x[2,0]=2 x[2,1]=3 
    }; 
    int[][] matX = new int[w][k];   //tab[w,k] 

    for(int i=0 ; i<matX.length ; i++) { 
     for(int j=0 ; j<matX[i].length ; j++) { 
      matX[i][j] = data.nextInt(); 
     } 
    } 

    for(int i=0 ; i<matX.length ; i++) { 
     for(int j=0 ; j<matX[i].length ; j++) { 
      System.out.println(matX[i][j]); 
      if(j==matX[i].length-1) { 
       System.out.println(System.lineSeparator()); 
      } 
     } 
    } 
    data.close(); 
} 
Смежные вопросы