Como Obter tamanho de Matriz?

Como eu pego a quantidade de linha e a quantidade de coluna ummatriz tem?

Exemplo: m[][] = {{1,2},{3,4},{6,7}};

1 curtida

Para saber o número de linhas e colunas é assim:

DEMO

int m[][] = {{1,2},{3,4},{6,7}};
int linhas = 0;
int colunas = 0;
    
if (m.length > 0)
{
    linhas = m.length;
    colunas = m[0].length;            
}
    
System.out.println("Colunas: " + colunas);
System.out.println("Linhas: " + linhas);

DEMO

Explicação: para saber o número de linhas eu pego o dado da matriz que é length que é o número da quantidade de linhas, após isso eu pego o índice zero (0) da linha para achar o número de colunas também no seu lenght.

Cuidado!!!

Nesse caso especifico eu sei o tamanho de cada item porque, ficou bem claro na demostração, ou seja, cada caso é um caso…

1 curtida

Muito obrigado!!!
Surgiu outra duvida, como eu troco null para zero?
Ex: n[][] = {{1},{3,4}};
output
1 0
3 4

Pergunto a você:

Como você vai colocar NULL é uma posição que não existe? Lembre-se que eu coloquei na sua minha primeira resposta uma Cuidado !!!, lembra?

Então esse item não existe nem para colocar NULL, mas, como todo programador presado que é você pode saber antes de ler as linhas e colunas as suas quantidades de itens dentro de uma linha e imprimir somente o que precisa:

Exemplo:

int n[][] = {{1},{3,4}};
int linhas = 0;
int colunas = 0;
if (n.length > 0)
{
	linhas = n.length;
	colunas = n[0].length;            
}

for(int i = 0; i < linhas; i++)
{
	colunas = n[i].length;
	for(int j = 0; j < colunas; j++)
	{
		System.out.print(" " + n[i][j]);
	}
	System.out.println();
}

Output (Saida)


Mas, mesmo assim você me indaga novamente dizendo eu quero imprimir zeros aonde não tem a coluna, como proceder?

Simples: varre o array de linhas e verifique qual é o item com maior número de colunas, crie um nova matriz com os itens de linha e colunas que foram encontrados?

Dessa forma:

int n[][] = {{1},{3,4}};
int linhas = 0;
int colunas = 0;        
if (n.length > 0)
{
	linhas = n.length;
	colunas = n[0].length;            
}
////////////////////////////////////////////////////
//encontrar o item com o maior 
//numero de colunas        
for(int i = 0; i < linhas; i++)
{
	if (n[i].length > colunas)
	{
		colunas = n[i].length;
	}
}
////////////////////////////////////////////////////
//novo array de valores normatizando
//o número de colunas
int n1[][] = new int[linhas][colunas];
for(int i = 0; i < linhas; i++)
{
	colunas = n[i].length;
	for(int j = 0; j < colunas; j++)
	{
		n1[i][j] = n[i][j];
	}   
}
////////////////////////////////////////////////////
//imprimir o novo array
linhas = n1.length;
colunas = n1[0].length;
for(int i = 0; i < linhas; i++)
{            
	for(int j = 0; j < colunas; j++)
	{
		System.out.print(" " + n1[i][j]);
	} 
	System.out.println();
}

Output (Saida)


Mas, eu quero imprimir somente 0 para ilustração:

Exemplo:

int n[][] = {{1},{3,4}};
int linhas = 0;
int colunas = 0;
int total = 0;
if (n.length > 0)
{
	linhas = n.length;
	colunas = n[0].length;            
}
////////////////////////////////////////////////////
//encontrar o item com o maior 
//numero de colunas        
for(int i = 0; i < linhas; i++)
{
	if (n[i].length > total)
	{
		total = n[i].length;
	}
}        

//Imprimir os valores existentes
//e quanto tiver a quantidade de colunas a mais
//imprimir 0 só para ilustração
for(int i = 0; i < linhas; i++)
{
	colunas = n[i].length;
	for(int j = 0; j < colunas; j++)
	{
		System.out.print(" " + n[i][j]);
	}  
	if (total > colunas)
	{
		for(int d = 0; d < (total-colunas); d++)
		{
			System.out.print(" 0");
		}
	}
	System.out.println();
}

Um obrigação de um desenvolvedor: estude, estude e estude
Quanto tempo: até seu último suspiro.

:wink:

1 curtida

:heart_eyes: Valeu cara!!
Eu tento fazer alguns códigos para exercitar, esse que eu pedi, irei tentai fazer algo ainda melhor, como implementar mais coisas! uheauheahue
Você sabe onde tem contéudo grátis para estudar Java, que seja completo?

1 curtida