[RESOLVIDO] IF Correto?

8 respostas
estezi

Boa tarde,

Estou com duvida com relação a estrutura do if que criei abaixo. Ela sempre retorna falso.	 

       public void adicionarPropriedadeDocumentoCobranca(String nome, String valor)
    {
    	DecimalFormat df = new DecimalFormat("#,###.00"); 

    	String sNome = "ValorDocumento";
        if(nome == sNome ) 
        {
        	System.out.println((new StringBuilder("\n#Adicionar propriedade -> xxxx[")).append(nome).append(":").append(df.format(Double.parseDouble(valor)/10)).append("]").toString());
	        Dispatch.put(boleto, nome, df.format(Double.parseDouble(valor)/10));
        } else
        {
    	System.out.println((new StringBuilder("\n#Adicionar propriedade ->ccc [")).append(nome).append(":").append(valor).append("]").toString());
        Dispatch.put(boleto, nome, valor);

        }
      //  System.out.println("#Propriedade adicionada");
        System.out.println(nome);	        
    }

8 Respostas

E

Comparar duas strings, em Java, é sempre feito com “equals”. No seu caso,

if (nome.equals (sNome))
E

A propósito, no seu caso, escrever

(new StringBuilder("\n#Adicionar propriedade ->ccc [")).append(nome).append(":").append(valor).append("]").toString()

dá exatamente na mesma (e é mais difícil de entender) que

"\n#Adicionar propriedade ->ccc [" + nome + ":" + valor + "]"

O compilador faz exatamente isso que você escreveu explicitamente, quando acha o código com “+”.

estezi

Obrigado meu caro, vou testar aqui ! :slight_smile:

guilherme.dio

Bem vindo ao GUJ.

Primeiramente, lembre-se de colocar os codigos entre a tag CODE:

public void adicionarPropriedadeDocumentoCobranca(String nome, String valor)
{
DecimalFormat df = new DecimalFormat("#,###.00");

String sNome = "ValorDocumento";
if(nome == sNome )
{
System.out.println((new StringBuilder("\n#Adicionar propriedade -> xxxx[")).append(nome).append(":").append(df.format(Double.parseDouble(valor)/10)).append("]").toString());
Dispatch.put(boleto, nome, df.format(Double.parseDouble(valor)/10));
} else
{
System.out.println((new StringBuilder("\n#Adicionar propriedade ->ccc [")).append(nome).append(":").append(valor).append("]").toString());
Dispatch.put(boleto, nome, valor);

}
// System.out.println("#Propriedade adicionada");
System.out.println(nome);
}
linngallo

Olá, amigo.

Utilize o "Code", do toolbox acima da caixa de edição de texto, para formatar o seu código:

public void adicionarPropriedadeDocumentoCobranca(String nome, String valor)
{
DecimalFormat df = new DecimalFormat("#,###.00");

String sNome = "ValorDocumento";
if(nome == sNome )
{
System.out.println((new StringBuilder("\n#Adicionar propriedade -> xxxx[")).append(nome).append(":").append(df.format(Double.parseDouble(valor)/10)).append("]").toString());
Dispatch.put(boleto, nome, df.format(Double.parseDouble(valor)/10));
} else
{
System.out.println((new StringBuilder("\n#Adicionar propriedade ->ccc [")).append(nome).append(":").append(valor).append("]").toString());
Dispatch.put(boleto, nome, valor);

}
// System.out.println("#Propriedade adicionada");
System.out.println(nome);
}

Conforme o nosso amigo, acima, disse, você deve utilizar o método equals para comparar Strings.

E

Outro segredinho. O código abaixo

System.out.println((new StringBuilder("\n#Adicionar propriedade -> xxxx[")).append(nome).append(":").append(df.format(Double.parseDouble(valor)/10)).append("]").toString());

poderia ser escrito como

System.out.printf ("%n#Adicionar propriedade -> xxxx[%s:%,.2f]", nome, valor / 10);
renanjp

Uma outra boa pratica de programação é sempre colocar as constantes em primeiro lugar
EX:

if("ValorDocumento".equals(nome))

Desta maneira a comparação parte da constante e não da variavel que pode estar nula…

Att

estezi

Agradeço a todos pelas respostas, e peço desculpas por não ter postado a pergunta utilizando as regras dos forum.

Abraço a todos,

Claudio Estezi
Dominus Sistemas

Criado 3 de julho de 2012
Ultima resposta 3 de jul. de 2012
Respostas 8
Participantes 5