Como imprimir matrizes


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

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
     }  
1 curtida

[code] 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   
    }    

[/code]
1 curtida

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.

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) );

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 ?

[code]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     
    }       

[/code]

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.

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 ;

}

}

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

[code]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

}[/code]

Me diga se der tudo certo.

É isso aí.

Funcionou ?