Imprimir matriz deslocada para a esquerda

1 resposta
G

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:
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(" ");
        }

    }

}

1 Resposta

marcoslogan

Não seria melhor você, em vez de usar a variável m, usar a variável que contém a matriz. Você pode usar a variável m1 e m2, seguidas do método length().

Criado 21 de março de 2010
Ultima resposta 21 de mar. de 2010
Respostas 1
Participantes 2