Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida sobre a condição do if

Olá, professor! Tudo bem?

Estou com uma dúvida que não é exatamente sobre o tema da aula, mas sobre a condição que foi utilizada no exemplo. Temos o seguinte código:

        if (valor.compareTo(new BigDecimal("1000")) > 0) {
            valor = BigDecimal.ZERO;
        }

Não entendi porque indicar > 0 na comparação! O correto não seria comparar se o valor > 1000?

3 respostas

A minha interpretação é que o zero acaba cumprindo a função de um this, para o compareTo. Está correta?

solução!

Oi Pedro,

No java tem várias classe que tem um método compareTo, sendo que esse método devolve um int seguindo a seguinte lógica:

  • Devolver um valor negativo caso o valor do objeto seja menor do que o valor do parâmetro sendo comparado
  • Devolver zero caso o valor do objeto seja igual ao valor do parâmetro sendo comparado
  • Devolver um valor positivo caso o valor do objeto seja maior do que o valor do parâmetro sendo comparado

Para facilitar o entendimento:

Integer valor1 = new Integer(10);
Integer valor2 = new Integer(20);

// compareTo vai devolver -1, pois valor1 é menor do que valor2
System.out.println(valor1.compareTo(valor2));

// compareTo vai devolver 0, pois valor1 é igual ao valor1
System.out.println(valor1.compareTo(valor1));

// compareTo vai devolver 1, pois valor2 é maior do que valor1
System.out.println(valor2.compareTo(valor1));

Bons estudos!

Muito obrigado pela atenção, Rodrigo!