[RESOLVIDO] Problemas ao utilizar um conversor!

Olá galera,

estou tentando implementar um conversor para fazer a devida conversão de Fahrenheit para Celsius. O problema é que na view sempre é exibido zero. Então acho que o problema é no método que deve retornar a String.

Agradeço quem puder ajudar.

taí o código

package br.anderson.conversor;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

public class TemperaturaConverter implements Converter {

	public Object getAsObject(FacesContext fc, UIComponent c, String value) {

		if (value == null || value.equals(""))
			throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, 
					"Erro!", "Digite a temperatura novamente!"));

		else {
			double tf = Double.parseDouble(value);
			double tc = (5/9) * (tf-32);
			return tc;
		}
	}

	public String getAsString(FacesContext fc, UIComponent c, Object value) {

		if (value == null || value.toString().equals(""))
			return "";

		else {
			
			Double temp = (Double) value;
			return temp.toString();
		}

	}

}

Olá Anderson,

Na sua classe, o atributo da temperatura tá declarado como qual tipo? Integer?

abs

olá bruno

está declarada como double, com os métodos gets e sets

pra facilitar taí

package br.anderson.bean;

public class TemperaturaBean {
	
	private double temperatura;

	public double getTemperatura() {
		return temperatura;
	}

	public void setTemperatura(double temperatura) {
		this.temperatura = temperatura;
	}

}
<f:view>

  <h:form id="frm">
  
  <h:messages layout="table" errorStyle="color: red"
			infoStyle="color: green" warnStyle="color: orange"
			fatalStyle="color: gray" showSummary="false" showDetail="true" />
  
  <h:outputText value="Temperatura: "/>
  <h:panelGroup>
    <h:inputText id="temp" value="#{temperaturaBean.temperatura}">
      <f:converter converterId="br.anderson.temp"/>
    </h:inputText>
    <h:message for="temp" showSummary="true" showDetail="false"/>
  </h:panelGroup>
  <br />
  
  &lt;h:panelGroup&gt;
    &lt;h:commandButton id="enviar" value="Enviar" action="enviar"/&gt;
  &lt;/h:panelGroup&gt;
  <br /> <br />
  
  &lt;h:panelGroup&gt;
    &lt;h:outputText value="Temperatura: "/&gt;
    &lt;h:outputText value="#{temperaturaBean.temperatura}"/&gt;
  &lt;/h:panelGroup&gt;
  
  &lt;/h:form&gt;

&lt;/f:view&gt;
&lt;faces-config&gt;

&lt;managed-bean&gt;
		&lt;managed-bean-name&gt;temperaturaBean&lt;/managed-bean-name&gt;
		&lt;managed-bean-class&gt;br.anderson.bean.TemperaturaBean&lt;/managed-bean-class&gt;
		&lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
	&lt;/managed-bean&gt;
	
	&lt;converter&gt;
	  &lt;converter-id&gt;br.anderson.temp&lt;/converter-id&gt;
	  &lt;converter-class&gt;br.anderson.conversor.TemperaturaConverter&lt;/converter-class&gt;
	&lt;/converter&gt;
	
	&lt;navigation-rule&gt;
		&lt;navigation-case&gt;
			&lt;from-outcome&gt;enviar&lt;/from-outcome&gt;
			&lt;to-view-id&gt;/index.jsp&lt;/to-view-id&gt;
		&lt;/navigation-case&gt;
	&lt;/navigation-rule&gt;

&lt;/faces-config&gt;

[quote=andersonrc]

double tc = (5/9) * (tf-32); [/quote]

Como 5 e 9 são inteiros, 5/9 será sempre a divisão inteira, que dará 0.

Fz assim:

double tc = (5.0/9) * (tf-32);

[quote=pmlm][quote=andersonrc]

double tc = (5/9) * (tf-32); [/quote]

Como 5 e 9 são inteiros, 5/9 será sempre a divisão inteira, que dará 0.

Fz assim:

double tc = (5.0/9) * (tf-32);
[/quote]

É isso mesmo pmlm

uma coisa bem simples que eu não tinha percebido

Obrigado!

Se quiser reduzir as chances de perder precisão no cálculo:

double tc = 5 * (tf-32) / 9.0;

[quote=ViniGodoy]Se quiser reduzir as chances de perder precisão no cálculo:

double tc = 5 * (tf-32) / 9.0;

valeu Vini