Problema com if + length em array bidimensional

Olá, gostaria de saber a respeito do código abaixo…

import javax.swing.JOptionPane;

   public class TestaArrayEntrada {

      public static void main( String[] args ) {

         int t[][] = new int[2][3];

         String entra = "";
         int entraI = 0;

         for (int linha = 0; linha < t.length; linha++)
            for (int coluna = 0; coluna < t[linha].length; coluna++) 
            {
               entra = JOptionPane.showInputDialog("Digite valores inteiros de entrada para um array 2x3: ");
               entraI = Integer.parseInt(entra);
               t[linha][coluna] = entraI;
             }

         // Conferindo...
         entra = "";
         for (int linha = 0; linha < t.length; linha++)
            for (int coluna = 0; coluna < t[linha].length; coluna++) 
            {
               entra += " " + t[linha][coluna];
               if (t[linha][coluna] == t[linha].length)
                  entra += ".";
            }


         JOptionPane.showMessageDialog(null, "Os numeros digitados foram: " + entra);


      } 

   }

O problema está na [size=18]linha 26[/size] no if. Ele compila e executa normalmente, o problema é que o ponto final aparece após o terceiro elemento do array e não após o último, como deveria. O que estou fazendo de errado?

o seu if compara se o conteúdo da matriz é do tamanho da sua “primeira dimensão”, que neste caso é 2, sendo assim o ponto só vai ser acrescentado à string se for digitado o valor 2, por coincidência em seus testes era o terceiro elemento

se oq vc quer é colocar o ponto no fim, para um final de fase, vc pode fazer isso deopis dos dois for na hora de escrever a resposta

	for (int linha = 0; linha < t.length; linha++)
		for (int coluna = 0; coluna < t[linha].length; coluna++)
			entra += " " + t[linha][coluna];
 
	JOptionPane.showMessageDialog(null, "Os numeros digitados foram: " + entra + ".");

flw, t+

Se quiser colocar um . por linha, ponha fora do for também:

for (int linha = 0; linha < t.length; linha++) for (int coluna = 0; coluna < t[linha].length; coluna++) { entra += " " + t[linha][coluna]; } entra += "."; }

Outra dica. Você pode ter um ganho considerável de performance se montar sua String num StringBuilder.
http://www.guj.com.br/posts/list/54259.java

[quote=quikkoo]o seu if compara se o conteúdo da matriz é do tamanho da sua “primeira dimensão”, que neste caso é 2, sendo assim o ponto só vai ser acrescentado à string se for digitado o valor 2, por coincidência em seus testes era o terceiro elemento

se oq vc quer é colocar o ponto no fim, para um final de fase, vc pode fazer isso deopis dos dois for na hora de escrever a resposta

	for (int linha = 0; linha < t.length; linha++)
		for (int coluna = 0; coluna < t[linha].length; coluna++)
			entra += " " + t[linha][coluna];
 
	JOptionPane.showMessageDialog(null, "Os numeros digitados foram: " + entra + ".");

flw, t+[/quote]

Valeu quikkoo! Eu estou seguindo de acordo com o livro que estou estudando que é o Java Como Programar 4ª edição.

Só uma dúvida:

No caso acima, o t.length não é o mesmo que array[último_elemento] e o t[linha].length o mesmo que
array[último_elemento][último_elemento] ?? Como eu deveria fazer a comparação para saber que chegou no útimo índice do array bidimensional?

Quanto ao ponto final é óbvio!! hehehehe Acho que eu estava quase dormindo quando fiz este exemplo, pois basta colocar ele após os for. Perfeito! :smiley:

Obrigado pela ajuda!

Valeu ViniGodoy! :slight_smile:

sem perceber vc fez isso nos dois for, todo array possui índices de 0 até array.lenght - 1

Sim, quanto ao array.length - 1 eu já compreendi. O que perguntei ali acima é se existe algum método que me diz quando o array preencheu o último elemento da última “dimensão” do array.

Se no exemplo acima, t[linha].length retorna um True quando o array bidimensional (isto é, a primeira e a segunda “dimensão”, neste caso) estão completamente preenchidas. É isso?

[quote=quikkoo]o seu if compara se o conteúdo da matriz é do tamanho da sua “primeira dimensão”, que neste caso é 2, sendo assim o ponto só vai ser acrescentado à string se for digitado o valor 2, por coincidência em seus testes era o terceiro elemento

[/quote]

A minha dúvida é, como usar um método que verifique se todas as dimensões do array estão preenchidas e uma vez estando retornem um True ou um valor. É isso.

ñ tem como vc saber se alguma posição foi ou ñ preenchida a menos que vc mesmo faça o controle disso, nesse caso está garantido que a matriz fica completamente preenchida, pois os for iteram até o limite