Boa tarde pessoal… Eu preciso fazer um programa que receba uma matriz mxn e retorne o resultado deslocado para a esquerda. Por exemplo:
matriz 3x3:
1 2 3
4 5 6
7 8 9
Teria como resultado:
2 3 1
5 6 4
8 9 7
Meu programa roda até a parte de fazer a leitura dos números,depois ele dá o seguinte erro:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 3
at eex3l1.Main.main(Main.java:33)
Java Result: 1
Aqui está a parte que eu fiz,fiz tudo no método main pq primeiro eu quero saber se minha lógica está certa pra dar continuidade pra depois deixar bonitinho:
[code]import java.util.Scanner;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner tec=new Scanner(System.in);
int m,n;
int m1[][],m2[][];
System.out.println("Informe o numero de linhas da matriz: ");
m=tec.nextInt();
System.out.println("Informe o numero de colunas da matriz: ");
n=tec.nextInt();
m1=new int[m][n];
m2=new int[m][n];
//leitura da matriz original
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
m1[i][j]=tec.nextInt();
//passando os valores trocados para a matriz 2. Aqui que dá pau...
for(int j=0;j<n-1;j++)
for(int i=0;i<m;i++)
m2[i][j]=m1[i+1][j+1];
for(int i=0;i<m;i++)
m2[i][n-1]=m1[i][0];
//imprime resultados
System.out.println("Matriz normal: ");
for (int i=0;i<m;i++){
for(int j=0;j<n;j++)
System.out.print(m1[i][j]);
System.out.println(" ");
}
System.out.println("Matriz Resultado");
for (int i=0;i<m;i++){
for(int j=0;j<n;j++)
System.out.print(m1[i][j]);
System.out.println(" ");
}
}
}[/code]