2
respostas

Calculo de 7%

class ICCC implements Imposto {

        public function calcula(Orcamento $orcamento) {
          if($orcamento->getValor() < 1000) {
            return $orcamento->getValor() * 0.05;
          }
         else if ($orcamento->getValor() >= 1000 && $orcamento->getValor() <= 3000) {
            return $orcamento->getValor() * 0.07;
          }
          else {
            return $orcamento->getValor() * 0.08 + 30;
          }
        }
      }

Nesta linha o correto não seria || ao invés de && } else if ($orcamento->getValor() >= 1000 && $orcamento->getValor() <= 3000) {

Tipo isto ? }elseif ($orcamento->getValor() <= 1000 || $orcamento->getValor() >= 3000) {

2 respostas

Não José, acho que você se confundiu um pouquinho ai. Vamos passo a passo, ok? Vamos analisar o primeiro desconto, o de 5%

if($orcamento->getValor() < 1000)

Aqui ele pega o valor do orçamento e vê se é menor do 1000, se for ele tem o desconto de 5%, certo? Isso é tranquilo.

 else if ($orcamento->getValor() >= 1000 && $orcamento->getValor() <= 3000)

Já nessa linha que você está em duvida ele pega o valor do orçamento e compara se é maior ou igual a 1000 se for ok, mas não é suficiente para entrar no bloco e dar o desconto, porque também é preciso verificar se é menor ou igual a 3000 se essas duas comparações forem verdadeiras (se o valor do orçamento é maior ou igual a 1000 e é menor ou igual a 3000) ele aplica o desconto, repare que aqui é um intervalo, se o orçamento estiver entre 1000 e 3000 ele aplica o desconto.

E por fim o Else, se o valor do orçamento não for menor do que 1000, não estiver entre 1000 e 3000 ele aplica o desconto de 8% + 30.

Do jeito que você passou $orcamento->getValor() <= 1000 || $orcamento->getValor() >= 3000 repare que os dois lados quebram o IF, porque nos já temos a verificação se ele for menor do que mil e já temos a verificação se ele for maior do que 3000.

Não sei se ficou muito claro, mas qualquer coisa você comenta aqui, ok?

Hum, ok ficou mais claro agora, obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software