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.
[code] public static void main(String[] args) {
String eleventhNumber, twelfthNumber, thirteenthNumber, input;
double quantidadecalor, 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.
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.[/quote]
Ou simplesmente:
if (!input.trim().matches("\\d+")) {
System.out.println("Digite somente números");
return;
} else {
click = Double.parseDouble (input.trim());
}
[quote=nel][quote=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.[/quote]
Ou simplesmente:
if (!input.trim().matches("\\d+")) {
System.out.println("Digite somente números");
return;
} else {
click = Double.parseDouble (input.trim());
}[/quote]
Regex não é meu forte.
Enfim, é uma solução válida e simples.
[quote=drsmachado][quote=nel][quote=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.[/quote]
Ou simplesmente:
if (!input.trim().matches("\\d+")) {
System.out.println("Digite somente números");
return;
} else {
click = Double.parseDouble (input.trim());
}[/quote]
Regex não é meu forte.
Enfim, é uma solução válida e simples.[/quote]
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.
String eleventhNumber, twelfthNumber, thirteenthNumber, input, result;
double quantidadecalor, 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);
String eleventhNumber, twelfthNumber, thirteenthNumber, input, result;
double quantidadecalor, 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);
fiz assim e rodou direitinnho, brigadão aew galera, são feras (Y)[/quote]
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.
[quote=nel]Calma. Qual a condição para que permaneça sempre em loop ?
E poste seu código completo.
Abraços.[/quote]
import javax.swing.JOptionPane;
public class Teste {
public static void main(String[] args) {
String eleventhNumber, twelfthNumber, thirteenthNumber, input;
double quantidadecalor, 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+")));
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.
String 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]")) {
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 ");
}
double click = Double.parseDouble(input);
// Aí faz o resto
[quote=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.
[code]
String 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]")) {
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 ");
}
double click = Double.parseDouble(input);
// Aí faz o resto
[/code][/quote]
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
Mais uma duvidazinha, coloquei um loop, mas primeiro ele da erro qndo digita 1, e depois q volta ele aceita o 1 normal
import javax.swing.JOptionPane;
public class Teste {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String eleventhNumber, twelfthNumber, thirteenthNumber, input;
double quantidadecalor, trabalho, VariacaoEnergia;
int 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 ");
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) {....