Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não funcionou

Problema:

O sistema da loja vai informar ao usuário qual o prazo máximo de entrega e
desconto no valor total do pedido, mediante à alguns critérios:
a. Clientes que moram no estado de SP ou PR terão seus produtos entregues
em até 5 dias uteis. Clientes que moram em outros estados terão seus
produtos entregues em até 10 dias uteis.
b. Clientes fora de SP ou PR terão um desconto de 10% no total do pedido.
c. Clientes fora de SP ou PR valor do frete será 5% do valor total do pedido
depois do desconto. Para SP ou PR frete grátis.

Classe Cliente

public class Cliente {

    private String nome;
    private String endereco;
    private String estado = "SP";
    private double valor;

    public Cliente(String nome, String endereco, String estado, double valor) {
        this.nome = nome;
        this.endereco = endereco;
        this.estado = estado;
        this.valor = valor;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    public double getValor() {
        return valor;
    }

    public String CalcularTempoFrete(Cliente cli) {
        if (this.estado == "SP" || this.estado == "PR") {
            return "O Prazo de entrega é de 5 dias uteis";
        } else {
            return "O Prazo de entrega é de 10 dias uteis";
        }
    }

    public double CalcularValor(Cliente cli) {
        if (!(this.estado == "SP") || !(this.estado == "PR")) {
            double resultado =  this.valor - (this.valor * 10) /100;
            return resultado;
        }else{
            return this.valor;
        }

    }

    public double CalcularFrete(Cliente cli){
        double resultado = 0;
        if (!(this.estado == "SP") || !(this.estado == "PR")) {
            resultado = (cli.CalcularFrete(cli) * 5) /100;
            return resultado;
        }else{
            return resultado;
        }

    }

    @Override
    public String toString() {

        return "Nome: " + this.nome + " Endereço: " + this.endereco + " UF: " + this.estado;
    }

}

Classe Sistema

import java.util.Scanner;

public class SistemaInformatica {
    public static void main(String[] args) {

        Scanner entrada = new Scanner(System.in);

        System.out.println("Digite o seu nome:");
        String nome = entrada.nextLine();
        System.out.println("Digite o seu endereço:");
        String endereco = entrada.nextLine();
        System.out.println("Digite o seu Estado:");
        String uf = entrada.nextLine();
        System.out.println("Digite o valor do produto:");
        double val = entrada.nextDouble();

        Cliente cli1 = new Cliente(nome, endereco, uf, val);
        System.out.println("Dados do cliente");
        System.out.println(cli1);
        System.out.println("Prazo");
        System.out.println(cli1.CalcularTempoFrete(cli1)); 
        System.out.println("Valor / Desconto");
        System.out.println(cli1.CalcularValor(cli1)); 
        System.out.println("Valor Frete");
        System.out.println(cli1.CalcularFrete(cli1)); 


        entrada.close();

    }
}

Acho que era para funcionar ... porem ta dando erro

1 resposta
solução!

Para fazer comparação entre objetos utilize o método equals() ao invés de ==.

if (!(this.estado.equals("SP")) || !(this.estado.equals("PR")))
{
...
}

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