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! 
Obrigado pela ajuda!
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