Bom dia galera, estou com um prob, no meu algoritimo tem uma caixa de dialogo no tem a opção de escolha 1 ou 2,
se 1, faça tal coisa, se 2 faça outra coisa, se diferente de 1 e 2 , mostre msg de erro, bom até aí tudo bem ta rodando certinho,
soh que quando digito alguma letra o prog fexa e nao mostra a msg de erro, aí ta o prob, ele tem q mostrar essa msg tbm,
ja q é diferente de 1 e 2, mas nao estou conseguindo fazer isso, Agradeço desde ja.
publicstaticvoidmain(String[]args){StringeleventhNumber,twelfthNumber,thirteenthNumber,input;doublequantidadecalor,trabalho,VariacaoEnergia,click;input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");click=Double.parseDouble(input);if(click!=1&&click!=2){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);}
e o valor inserido foi uma letra, ele irá lançar uma exception. Isso está interrompendo teu programa, pois não há tratamento adequado para a questão.
Logo, você deve, primeiro, validar se é número ou não, adicionando um try/catch e tratando a exceção, caso não seja número.
nel
drsmachado:
Quando você tenta fazer isso
click=Double.parseDouble(input);
e o valor inserido foi uma letra, ele irá lançar uma exception. Isso está interrompendo teu programa, pois não há tratamento adequado para a questão.
Logo, você deve, primeiro, validar se é número ou não, adicionando um try/catch e tratando a exceção, caso não seja número.
Ou simplesmente:
if (!input.trim().matches("\\d+")) {
System.out.println("Digite somente números");
return;
} else {
click = Double.parseDouble (input.trim());
}
drsmachado
nel:
drsmachado:
Quando você tenta fazer isso
click=Double.parseDouble(input);
e o valor inserido foi uma letra, ele irá lançar uma exception. Isso está interrompendo teu programa, pois não há tratamento adequado para a questão.
Logo, você deve, primeiro, validar se é número ou não, adicionando um try/catch e tratando a exceção, caso não seja número.
Ou simplesmente:
if (!input.trim().matches("\\d+")) {
System.out.println("Digite somente números");
return;
} else {
click = Double.parseDouble (input.trim());
}
Regex não é meu forte.
Enfim, é uma solução válida e simples.
nel
drsmachado:
nel:
drsmachado:
Quando você tenta fazer isso
click=Double.parseDouble(input);
e o valor inserido foi uma letra, ele irá lançar uma exception. Isso está interrompendo teu programa, pois não há tratamento adequado para a questão.
Logo, você deve, primeiro, validar se é número ou não, adicionando um try/catch e tratando a exceção, caso não seja número.
Ou simplesmente:
if (!input.trim().matches("\\d+")) {
System.out.println("Digite somente números");
return;
} else {
click = Double.parseDouble (input.trim());
}
Regex não é meu forte.
Enfim, é uma solução válida e simples.
Sem dúvidas. Não chegou nem a ser uma critica, por isso usei o OU, apenas quis mostrar outra solução ao colega.
Abraços machado.
B
bixigas
publicstaticvoidmain(String[]args){StringeleventhNumber,twelfthNumber,thirteenthNumber,input,result;doublequantidadecalor,trabalho,VariacaoEnergia,click;input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");if(!input.trim().matches("\\d+")){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);return;}else{click=Double.parseDouble(input.trim());}if(click!=1&&click!=2){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);}
fiz assim e rodou direitinnho, brigadão aew galera, são feras (Y)
drsmachado
bixigas:
publicstaticvoidmain(String[]args){StringeleventhNumber,twelfthNumber,thirteenthNumber,input,result;doublequantidadecalor,trabalho,VariacaoEnergia,click;input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");if(!input.trim().matches("\\d+")){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);return;}else{click=Double.parseDouble(input.trim());}if(click!=1&&click!=2){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);}
fiz assim e rodou direitinnho, brigadão aew galera, são feras (Y)
Só identa corretamente teu código, que assim fica parecendo meu quarto, de tão bagunçado.
Se está usando o Eclipse, pressiona CTRL + SHIFT + F que arruma tudo certinho (ou quase).
Se é netbeans, SHIFT + ALT + F.
Nel, tranquilo, mesmo se fosse crítica, seria benvinda, afinal, nós estamos sempre aprendendo.
B
bixigas
tentei colocar um laço, se a entrada for em numeros ele mostra a msg e volta pra caixa d dialogo,
se for letras mostra a msg mas nao volta.
StringeleventhNumber,twelfthNumber,thirteenthNumber,input;doublequantidadecalor,trabalho,VariacaoEnergia,click;do{input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");if(!input.trim().matches("\\d+")){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);return;}else{click=Double.parseDouble(input.trim());if(click!=1&&click!=2){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);}}}while(click!=1||click!=2);{}
nel
Troca o || por &&.
B
bixigas
nao deu certo , tentei isso tbm , mas deu errado
while (click != 1 && click != 2 && (!input.trim().matches("\\d+")));
nel
Calma. Qual a condição para que permaneça sempre em loop ?
E poste seu código completo.
Abraços.
B
bixigas
nel:
Calma. Qual a condição para que permaneça sempre em loop ?
E poste seu código completo.
Abraços.
importjavax.swing.JOptionPane;publicclassTeste{publicstaticvoidmain(String[]args){StringeleventhNumber,twelfthNumber,thirteenthNumber,input;doublequantidadecalor,trabalho,VariacaoEnergia,click;do{input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");if(!input.trim().matches("\\d+")){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);return;}else{click=Double.parseDouble(input.trim());}if(click!=1&&click!=2){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);}}while(click!=1&&click!=2&&(!input.trim().matches("\\d+")));
F
felipeaps
Não sei se essa é a melho opção, mas não to inspirado hj ^^
Também troquei a regex, senão vc podia colocar qualquer número.
Stringinput=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");while(!input.trim().matches("[1-2]")){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");}doubleclick=Double.parseDouble(input);//Aífazoresto
B
bixigas
felipeaps:
Não sei se essa é a melho opção, mas não to inspirado hj ^^
Também troquei a regex, senão vc podia colocar qualquer número.
Stringinput=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");while(!input.trim().matches("[1-2]")){JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");}doubleclick=Double.parseDouble(input);//Aífazoresto
:D :D :D
Funcionou q é uma beleza, brigadão a atenção e a ajuda maninho, um abraço, vo apagar o codigo ali pra evitar qqer coisa hehe
F
felipeaps
Olhando agora, você nem precisaria transformar para número né…
Era só fazer um input.equals(“1”) ou input.equals(“2”);
F
felipeaps
Não apaga nada não. Só coloca [RESOLVIDO] no título.
B
bixigas
felipeaps:
Olhando agora, você nem precisaria transformar para número né…
Era só fazer um input.equals(“1”) ou input.equals(“2”);
é q sou novão em JAva ainda, 1 semana, e ainda to aprendendo sozinho, tipo to com o Deitel aki e a ajuda d vcs,
então nao entendo muito ainda nao,
B
bixigas
vou colocar sim,
apaguei soh um pedaço do codigo, o topico nao vou apagar nao
B
bixigas
Mais uma duvidazinha, coloquei um loop, mas primeiro ele da erro qndo digita 1, e depois q volta ele aceita o 1 normal
importjavax.swing.JOptionPane;publicclassTeste{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){StringeleventhNumber,twelfthNumber,thirteenthNumber,input;doublequantidadecalor,trabalho,VariacaoEnergia;intclick;input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");do{JOptionPane.showMessageDialog(null,"Error! Digite 1 ou 2","ERROR !",JOptionPane.ERROR_MESSAGE);input=JOptionPane.showInputDialog("Digite 1 se a variação de energia interna não for 0"+"\n Digite 2 se a variação de enregia interna for 0 ");}while(!input.trim().matches("[1-2]"));click=Integer.parseInt(input.trim());if(click==1){....
B
bixigas
Alguemm?
F
felipeaps
Vc sabe a diferença entre os comandos “while” e “do - while”??
Pega um papel, uma caneta e segue seu código na mão. Vê o que ele está fazendo.
B
bixigas
felipeaps:
Vc sabe a diferença entre os comandos “while” e “do - while”??
Pega um papel, uma caneta e segue seu código na mão. Vê o que ele está fazendo.
“do while” == faça (tal coisa) enqnto entrada nao for == 1-2
while nao consegui fazer nada com while, nao entendi ele
F
felipeaps
Ok, para de dormir na aula. ^^
do - while: Faça o que quiser e depois testa a condição de parada. Se a condição não for satisfeita, repita o loop.
whilhe: Testa a condição de parada. Se a condição não for satisfeita, faça o que quiser, testa condição de parada de novo.
Portanto, não importa oq vc entre de dado aí, ele sempre vai imprimir a mensagem de erro. Por quê?
Porque o do-while primeiro executa o código e depois testa a entrada.
Já que vc não conseguiu fazer nada com o while, troca seu do-while por while e tenta fazer aí.
B
bixigas
Pois é… tentei fazer aki e deu certo com while,
e essa resposta ja ta la na primeira pagina, o burro aki q nao pretou atenção.