Olá gente!
Minha dúvida é a seguinte:
Eu preciso fazer um array com um certo número de linhas e colunas, só que esses números vão ser digitados pelo usuário na execução do programa.
Como eu posso fazer isso?
Já tentei fazer tipo:
[code]int lcont=0,ccont=0;
int vetor[][]= new int [lcont][ccont];
int linhas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));
int colunas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));
lcont=linhas;
ccont=colunas;[/code]
Faça o seguinte inicie a matriz depois de ter os valores do usuario ok?
/** Evite usar variaves desnecessarias*/
int linhas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));
int colunas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));
int vetor[][]= new int [linhas][colunas]; // Entendeu?
Espero ter ajudado…
caso não fosse o que procurava me perdoe…
Abraços…
Estou usando try/catch para evitar que o usuário digite letras ou numeros inválidos assim:
try {
int linhas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));
}
catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null,"Valor inválido!");
}
try {
int colunas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));
}
catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null,"Valor inválido!");
}
E isso causa problema em todas as linhas que possuem as variáveis “linhas” e colunas"… O que eu estou fazendo de errado? :?
Bom depende de como quer tratar o erro… deseja que a aplicação termine caso o valor esteja incorreto? ou quer ficar em um laço até que o usuario entre com o valor correto?
Sobre o erro,
Entenda que o compilador não encherga fora do try {} nada que tenha sido declarado dentro do mesmo.
Porque caso entre no catch ele não acharia a variavel que é declarada dentro do try.
Bom depende de como quer tratar o erro… deseja que a aplicação termine caso o valor esteja incorreto? ou quer ficar em um laço até que o usuario entre com o valor correto? [/quote]
Esta aplicação que eu estou fazendo é um exercício sobre try/catch, eu estou fazendo a aplicação encerrar caso receba um valor inválido, mas se tiver como fazer ele repetir até receber um valor válido melhor ainda. Tem como fazer isso sem usar o try/catch?
E tipo…agora quando eu declaro as variáveis linhas e colunas primeiro, o vetor dá erro falando as variáveis não foram inicializadas.
Bom depende de como quer tratar o erro… deseja que a aplicação termine caso o valor esteja incorreto? ou quer ficar em um laço até que o usuario entre com o valor correto? [/quote]
Esta aplicação que eu estou fazendo é um exercício sobre try/catch, eu estou fazendo a aplicação encerrar caso receba um valor inválido, mas se tiver como fazer ele repetir até receber um valor válido melhor ainda. Tem como fazer isso sem usar o try/catch?
E tipo…agora quando eu declaro as variáveis linhas e colunas primeiro, o vetor dá erro falando as variáveis não foram inicializadas.
Vc pode usar uma função que verifica se a String Recebida é numerica ou não e jogar ela em um do{}while.
Vou te passar a função e a ideia é essa veja o que consegue fazer ai.
public static boolean isNumero(String texto) {
String number = "0123456789";
for(int i = 0; i < texto.length(); i++){
if(!(number.indexOf(texto.charAt(i)) != -1)){
return false;
}
}
return true;
}
Vc pode usar uma função que verifica se a String Recebida é numerica ou não e jogar ela em um do{}while.
Vou te passar a função e a ideia é essa veja o que consegue fazer ai.
public static boolean isNumero(String texto) {
String number = "0123456789";
for(int i = 0; i < texto.length(); i++){
if(!(number.indexOf(texto.charAt(i)) != -1)){
return false;
}
}
return true;
}
Att,
Ricoldi[/quote]
Muito obrigada,Ricoldi, com do/while eu consigo fazer normalmente o que eu quero, mas o problema é que o exercício pede que use try/catch para verificar se o valor é válido ou não e cada hora essa estrutura gera um problema diferente. Agora quando eu declaro as variáveis linha e coluna fora do try/catch, ele pede que as variáveis sejam inicializadas, mesmo o vetor sendo iniciado depois dessas variáveis receberem os valores.
Entendi seu problema porem não concordo com o exemplo aplicado por seu professor pois não é correto utilizar try{}catch{} para controle de fluxo. E já que a função dele é ensinar deve pelo menos ensinar corretamente. “espero estar errado”
sobre seu problema assim que deve funcionar corretamente:
int vetor[][] = null;
while (Vetor == null){
try {
int linhas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));
int colunas= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));
vetor[][] = new int [linhas][colunas];
}catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null,"Valor inválido!");
}
}
Soh explicando, se passar alguma coisa q nao seja um numero pela String valor o método parseInt da classe Integer irá lançar a exceção NumberFormatException. Então aqui nos capturamos a exceção e retornamos false caso ela seja levantada!
Valeu gente, eu consegui resolver o problema aqui !!!
ricoldi, ele não pediu para controlar o fluxo do programa com try/catch não, era pra usar só pra testar se o valor era válido ou não, mas o fluxo do programa deveria continuar assim mesmo. A questão de controlar o fluxo do programa eu mesma que tive curiosidade de saber se era possível,