Tipo erros dessa natureza nao sao dectados como uma possivel fonte de erros, tipo como se estivesse esperando um numero e o usuario digitasse uma palavra daria um erro do tipo NumberFormatException.
Voce pode fazer da seguinte maneira.
try{
Long numero = Long.parseLong(JOptionPane.showInputDialog("Digite algo"));
} catch(NumberFormatException e){
System.out.println("Digite um numero valido");
} catch(Exception e ){//exception generica.
System.out.println("Erro desconhecido...tente novamente");
}
try{
Long numero = Long.parseLong(JOptionPane.showInputDialog("Digite algo")); // Tenta converter o texto digitado para Long
} catch(NumberFormatException e){ // cai na exceção, pois não é possível transformar um texto em número
System.out.println("Digite um numero valido");
} catch(Exception e ){//exception generica.
System.out.println("Erro desconhecido...tente novamente");
}
Entao renato,
no codigo que eu postei que voce tinha ficado com duvidas, é o seguinte. O java tem algumas convençoes quanto as suas classes, algumas podem gerar erros claros e outras nao, como o seu codigo por exemplo, se voce nao digitar um texto nao vai ter erro caso contrario um erro vai ser disparado.
Esse modo que eu fiz dentro de um laço de execução protegido “TRY/CATCH”, permite que voce possa capturar e assumir alguma atitude em caso de erro de acordo com o tipo de erro e permitindo tambem que voce possa definir suas proprias excecoes.
try{
Long numero = Long.parseLong(JOptionPane.showInputDialog("Digite algo")); // Tenta converter o texto digitado para Long
} catch(NumberFormatException e){ // cai na exceção, pois não é possível transformar um texto em número
throw new NumeroDigitadoDesconhecido("Digite algo correto");
} catch(Exception e ){//exception generica.
System.out.println("Erro desconhecido...tente novamente");
}
fala ai kara , blz
acho q naum entendi direito sua pergunta ,
vc usa o seguinte codigo .
int num ;
Strig abc ;
num=Integer.parseint.JOP.SID(“digite um numero”);
que acontecesse nesse passo é que ele pega um numero em string e passa a validar como int. “acho q vc já sabe disso”
se você fizer assim :
num=JOP.SID("digite um numero ")
ele não vai validar essa informação devido a varial ser de tipo diferente
…
o camiho é como o ex acima pq
ele pega esse dado q foi inserido e cheka se é comparivel . de
forma explicita . …
qq coisa de detalhe do codigo q você esta com duvida pra analizar melhor ok ?!!! 8O :idea:
tentou fazer o que eles disseram?! com a resposta deles vc já tem condições de fazer o que você quer, seu problema não esta sendo de sintaxe, esta sendo de lógica, falta de atenção e falta de vontade… desculpa ser extremamente antipatico mas essa foi a minha impressão.
public static void main(String args[]) {
String in = null;
do {
in = JOptionPane
.showInputDialog("0 ou 1: ");
try {
Integer.parseInt(in);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Número invalido");
in = null;
}
} while (in == null);
}
Tá, explicando
Eu vou ler o que o usuário digitar enquanto ele não digitar algo valido, isso é o do { … } while(expressao) : Faça algo enquanto tal expressão não for verdade.
Para verificar se o cara digitou um número, eu tento converter o digitado para número, se der uma exceção do tipo NumberFormatException, significa que o sistema não conseguiu converter
Outra forma, usando expressão regular:
String in = null;
do {
in = JOptionPane
.showInputDialog("Entre com 1 para sim e 0 para não: ");
} while (in != null && !in.matches("\d*"));
COMO NÓS SOMOS INICIANTES KARA ,
TIPO ATENTAR MAIS A LOGICA DEIXA O PRG DE TESTE FUNCIONANDO É MUITO BOM , CLARO Q TRATAR INFORMAÇOES É MUITO IMPORTANTE .POR QUE AINDA NÃO CONHECEMOS TODA A LINGUAGEM E QUE ELA PODE OFERECER NÃO É ?
COM OS POST’S ACIMA JÁ PROVAVEL Q VOCE TENHA CONSEGUDO TRATAR ESSA INFORMAÇÃO BÁSICA .
PROCURE AVANÇAR MAIS NA LINGUAGEM Q VOCE PERDERÁ MENOS TEMPO E TRATARA A INFOMAÇÃO NATURALMENTE .