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:
intlcont=0,ccont=0;intvetor[][]=newint[lcont][ccont];intlinhas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));intcolunas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));lcont=linhas;ccont=colunas;
Faça o seguinte inicie a matriz depois de ter os valores do usuario ok?
/** Evite usar variaves desnecessarias*/intlinhas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));intcolunas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));intvetor[][]=newint[linhas][colunas];//Entendeu?
Espero ter ajudado…
caso não fosse o que procurava me perdoe…
Abraços…
Sora
Sim,era isso mesmo,muito obrigada !!!
Mas infelizmente surgiu outro problema…
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? :?
ricoldi
Sora,
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.
Entende?
felipedamiani
Sora, declare as variáveis fora do try{} catch{}
Sora
Sora,
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?
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.
Programinha mais enjoado esse…
Sora
Sora,
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?
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.
Programinha mais enjoado esse…
ricoldi
Sora, Bom dia.
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.
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.
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.
ricoldi
Sora,
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:
intvetor[][]=null;while(Vetor==null){try{intlinhas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de linhas do array:"));intcolunas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de colunas do array:"));vetor[][]=newint[linhas][colunas];}catch(NumberFormatExceptionex){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!
Sora
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,
ricoldi
Por favor, coloque [Resolvido] no assunto do primeiro post.