Como imprimir matrizes

10 respostas
van_bommel
import javax.swing.*;

public class Exer38 {
/*
39) Desenvolva uma classe com um método que vasculhe uma matriz de números inteiros em busca de um número
procurado. O retorno, caso ele seja encontrado, será a linha da matriz em que ele se encontra; 
caso ele não exista na
matriz, o valor retornado será -1. Sua assinatura seria int metodo (int matriz [ ][ ], int procurado).
*/

  public static void main(String args[])
  {
    int nLinhas, nColunas;
    int matriz[][];
    String aux; 
    String saida = "" ;
    
    
    aux = JOptionPane.showInputDialog(null, "Quantas linhas?", "Matriz", JOptionPane.QUESTION_MESSAGE);
    nLinhas = Integer.parseInt(aux);
    
    aux = JOptionPane.showInputDialog(null, "Quantas colunas?", "Matriz", JOptionPane.QUESTION_MESSAGE);
    nColunas = Integer.parseInt(aux);
    
    matriz = new int[nLinhas][nColunas];
    
    for (int l = 0; l < matriz.length; l++)
    {
      for (int c = 0; c < matriz[0].length; c++)
      {
        aux = JOptionPane.showInputDialog(null, "Qual o elemento da Linha " + (l+1) + " e coluna " + (c+1), "Matriz", JOptionPane.QUESTION_MESSAGE);
        matriz[l][c] = Integer.parseInt(aux); 
  
         
      
      }

    }
    
    
    

    
    
    
    }
    
  }

COmo faço para imprimir a matriz?

eu consigo imprimir …mais sai como array~;;s

10 Respostas

pmlm

Imprime da mesma forma que fazes para preencher

for (int l = 0; l < matriz.length; l++)  {  
       for (int c = 0; c < matriz[0].length; c++)     { 
           System.out.print(matriz[l][c] + " "); //imprime caracter a caracter
       }  
       System.out.println(" "): //muda de linha
     }
van_bommel
for (int l = 0; l < matriz.length; l++)  {     
     for (int c = 0; c < matriz[0].length; c++)     {   
// imprime elemento a elemento pra que essa String vazia ? 
         System.out.print(matriz[l][c] + " "); //imprime caracter a caracter   
     }     
   /// essa linha abaixo serve para mudar de linha 
   // String vazia ?
     System.out.println(" ");
      //muda de linha   
     }    

    
    pq assim não funciona ???


      for (int l = 0; l < matriz.length; l++)  {     
         for (int c = 0; c < matriz[0].length; c++)     {   
         JOptionPane.showMessageDialog(null,matriz[l][c] + " "); //imprime caracter a caracter   
     }     
          JOptionPane.showMessageDialog(null," ");
      //muda de linha   
        }
vitor_lima

No System.out.print(" ") a String não está vazia, e sim com um espaço em branco
que serve para deixar todos os elementos de uma mesma linha separados.
O System.out.println(" ") imprime o que for passado e quebra linha, então nesse caso não precisaria ser passada
essa String.

van_bommel

Uma outra duvida que tenho porque não posso imprimir no JOptionPane um metodo void
da esse erro aqui

‘void’ type not allowed here
JOptionPane.showMessageDialog ( null , impi(matriz) );

vitor_lima

Este impi(matriz) é um método void ?

Por que se for ele não será compatível com o argumento esperado pelo
método JOptionPane.showMessageDialog.

Deixa eu ver se entendi.
Você criou um método void impi(int[][] matriz) que imprime
o conteúdo da matriz usando os prints (assim como nos exemplos acima)
e quer colocar essa saída gerada por este
método dentro da janela de mensagem ?

van_bommel
mais ou menos isso.

 }

          JOptionPane.showMessageDialog ( null , impi(matriz) );
     
    
    
    }
    
    
      public static void  impi (int matriz [][ ] ){
    for (int l = 0; l < matriz.length; l++)  {     
     for (int c = 0; c < matriz[0].length; c++)     {   
         saida = saida + matriz[l][c] ; //imprime caracter a caracter   
     }     
     saida =saida +"\n"; //muda de linha   
   }    
   
      System.out.println ( saida );
   }



no caso então o JOption.e o system.out.println o argumento  deles não pode ser um metodo void...

no caso aki em baixo pq não funciona ?

      for (int l = 0; l < matriz.length; l++)  {       
         for (int c = 0; c < matriz[0].length; c++)     {     
         JOptionPane.showMessageDialog(null,matriz[l][c] + " "); //imprime caracter a caracter     
     }       
          JOptionPane.showMessageDialog(null," ");   
      //muda de linha     
        }
vitor_lima

Por que cada iteração do for vai mostrar
uma janela.

Perceba que cada vez que você passa pelo for
o comando JOptionPane.showMessageDialog é executado.

van_bommel

import javax.swing.*;

public class Exer38 {

/*

39) Desenvolva uma classe com um método que vasculhe uma matriz de números inteiros em busca de um número

procurado. O retorno, caso ele seja encontrado, será a linha da matriz em que ele se encontra;

caso ele não exista na

matriz, o valor retornado será -1. Sua assinatura seria int metodo (int matriz [ ][ ], int procurado).

*/    static String saida = “” ;
public static void main(String args[])

{

int nLinhas, nColunas;

int matriz[][];

String aux;
aux = JOptionPane.showInputDialog(null, "Quantas linhas?", "Matriz", JOptionPane.QUESTION_MESSAGE);
nLinhas = Integer.parseInt(aux);

aux = JOptionPane.showInputDialog(null, "Quantas colunas?", "Matriz", JOptionPane.QUESTION_MESSAGE);
nColunas = Integer.parseInt(aux);

matriz = new int[nLinhas][nColunas];

for (int l = 0; l < matriz.length; l++)
{
  for (int c = 0; c < matriz[0].length; c++)
  {
    aux = JOptionPane.showInputDialog(null, "Qual o elemento da Linha " + (l+1) + " e coluna " + (c+1), "Matriz", JOptionPane.QUESTION_MESSAGE);
    matriz[l][c] = Integer.parseInt(aux); 
   }

   }

      JOptionPane.showMessageDialog ( null , impi(matriz) );
 
  }
      
  public static String impi (int matriz [][ ] ){
  for (int l = 0; l < matriz.length; l++)  {     
  for (int c = 0; c < matriz[0].length; c++)     {   
     saida = saida + matriz[l][c] ; //imprime caracter a caracter   
  }     
    saida =saida +"\n"; //muda de linha   
  }    

  return saida ;

}

}

vitor_lima

Use este método no lugar do impi(int[][] matriz) que você estava usando.

public String formataSaidaDaMatriz(int[][] matriz){

		String saida=""; // Cria e inicializa uma String	

		for(int linha=0;linha<matriz.length;linha++){ //for para percorrer as linhas da matriz
			for(int coluna=0;coluna<matriz[0].length;coluna++){ //percorrer as colunas
                                //guardando na String cada elemento separado por um espaço
				saida= saida +matriz[linha][coluna] + " ";
			}
			saida = saida + "\n"; // Guarda uma quebra de linha na String
			
		}		
		return saida; //retorna a String
}

Me diga se der tudo certo.

vitor_lima

É isso aí.

Funcionou ?

Criado 9 de setembro de 2009
Ultima resposta 9 de set. de 2009
Respostas 10
Participantes 3