Ir ao conteúdo

Dificuldade de arrumar um problema


DiF

Posts recomendados

  • Moderador
Postado

Boa tarde pessoal,

estou desevolvendo um aplicativo de calculo aproximado de calorias gastas.

de fato ele funciona, calcula e apresenta o resultado.. mas tipo. alguns apresentam a resposta com duas casas decimais outros apresentam com 4 casas decimais. ja tentei usar a substring pra limitar apenas em duas casas.. mas quando uso a substring no parametro da jtext da resposta... da erro quando faço operaçoes com numeros inteiros e alguns com decimais por exemplo:

se eu calculo com o peso corporal de 87.1 ele funciona mas se eu calcular com 87 ou 87.0 ja dá erro.

se eu tiro a substring funciona, mas ai volta o problema das opções quando seleciona um derterminado tipo ela dá 4 casas depois da virgula.

as condiçoes que criei num bloco de IF porque switch case eu nao consegui fazer é a seguinte:



if (jRadioButtonSedentario.isSelected() & jRadioButtonHomem.isSelected()) {
valorAtividade = (float) 1.2;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonSedentario.isSelected() & jRadioButtonMulher.isSelected()) {
valorAtividade = (float) 1.2;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonBaixaAtividade.isSelected() & jRadioButtonHomem.isSelected()) {
valorAtividade = (float) 1.3;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonBaixaAtividade.isSelected() & jRadioButtonMulher.isSelected()) {
valorAtividade = (float) 1.3;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonAtividadeModerada.isSelected() & jRadioButtonHomem.isSelected()) {
valorAtividade = (float) 1.4;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonAtividadeModerada.isSelected() & jRadioButtonMulher.isSelected()) {
valorAtividade = (float) 1.4;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonAtividadeElevada.isSelected() & jRadioButtonHomem.isSelected()) {
valorAtividade = (float) 1.5;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonAtividadeElevada.isSelected() & jRadioButtonMulher.isSelected()) {
valorAtividade = (float) 1.5;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonAtividadeIntensa.isSelected() & jRadioButtonHomem.isSelected()) {
valorAtividade = (float) 1.6;
calculo = (valorSexo * pesoKG) * valorAtividade;
}
else
if (jRadioButtonAtividadeIntensa.isSelected() & jRadioButtonMulher.isSelected()) {
valorAtividade = (float) 1.6;
calculo = (valorSexo * pesoKG) * valorAtividade;
}

note que eu quis usar o operador & sozinho porque eu quero validar os dois radio buttons..

esse é um dos problemas... agora o outro.. é porque que ele nao entra no bloco do if que verifica se o campo jText onde digita o peso esta embranco.. ele passa reto por ele.. fiz da se guinte forma:



if (peso.equals("")) {
JOptionPane.showMessageDialog(null, "Informe um peso");
}else...

depois desse else entra todos aqueles ifs que eu postei ali em cima... ou seja primeiro eu quis validar se o campo estava vazio.. se sim.. entrava no joptionpane senao.. ele entrava nos blocos de ifs dos calculos..

como posso arrumar isso?

desculpem me pelo post grande.. mas é inevitavel... por causa dos codigos..

abraço

Postado

Ae amigo , Boa noite !!

Tenho uma função que talvez resolva seu problema, não sei se é o que quer, pelo que li seu comentário no meu tópico parece ser o que você procura.


peso.setText(String.valueOf(converterDoubleToString(calculo))); //chamada da função

// função
public String converterDoubleToString(double calculo){
DecimalFormat format = new DecimalFormat("0.00");
String resultadoFormatacao = format.format(troco);
String[] addVirgula = resultadoFormatacao.split("[,]");
String resultadoFinal = addVirgula[0]+","+addVirgula[1];
return resultadoFinal;

}

talvez seja util a você.

  • Moderador
Postado

amigo, foi muito util sim muito obrigado.

agora so tenho mais uma coisinha pra resolver.. q eu nao to conseguindo.. e é algo bem basico...

eu to tentando validar o campo vazio do jtext.. só q ele nao ta validando.

primeiro eu fiz assim:


if (peso.equals("")) {
JOptionPane.showMessageDialog(null, "Informe um peso");
}

ate ai acho q ta certo. porque esse peso é a variavel que captura a string digitada no campo do jtext.

só q tambem como ja postei ali em cima... tenho uma cadeia de ifs pros calculos... como eu faço a validaçao da seguinte forma:

Se o campo peso estiver vazio apresenta um JOptionpane contendo: "informe um peso" senão entra na cadeia de ifs dos calculos..

ja tentei fazer com try-catch mas nao funcionou também..

abraço

Postado

Boa noite !

Ae, acho que tenho a solução =D


if(!peso.getText().equals("")){

executa os if's ...

}else{

JOptionPane.showMessageDialog(null, "Informe um peso !");

}

[/code

Testa ae =D

  • Moderador
Postado
Boa noite !

Ae, acho que tenho a solução =D


if(!peso.getText().equals("")){

executa os if's ...

}else{

JOptionPane.showMessageDialog(null, "Informe um peso !");

}

[/code

Testa ae =D

valeu pela ajuda amigo mas ainda nao funcionou o erro que dá é esse:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String

at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:994)

at java.lang.Float.parseFloat(Float.java:422)

at calculo.jButtonCalcularActionPerformed(calculo.java:261)

at calculo.access$000(calculo.java:19)

at calculo$1.actionPerformed(calculo.java:175)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6267)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6032)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Postado

Mano, comecei a programar em java a pouco tempo e ainda nao consigo entender aquele monti de linha vermelha (riso). Mas, reveja as declarações das variaveis, parece ser conflito de tipos.

  • Moderador
Postado
Mano, comecei a programar em java a pouco tempo e ainda nao consigo entender aquele monti de linha vermelha (riso). Mas, reveja as declarações das variaveis, parece ser conflito de tipos.

acho q nao parece ser conflito de tipos porque esse erro ocorre apenas quando deixo o jText em branco e tento calcular alguma coisa..

eu to quebrando a cabeça pra mandar ele dar uma caixa de alerta

teoricamente eu achava q era so colocar tudo num bloco de if. depois tentei nos blocos de try-catch mas nao tive sucesso..

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!