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

Saudações amigos programadores. É possível fazer a operação abaixo no atributo Lucro desta Classe? . Quando instancio este objeto, o valor vem 0.0 mesmo existindo os valores de compra e venda já definidos na instancia. Valeuu!

public class Carro {

String marca; String modelo; String cor; int ano; double valorDeCompra; double valorDeVenda; double lucro = valorDeCompra - valorDeVenda; boolean vendido;

}

2 respostas

Boa noite Felipe,

Neste cenário o ideal é transformar a propriedade lucro em um método que nos retorne o valor deste calculo. Assim:

classe Carro

public class Carro {

    String marca; 
    String modelo; 
    String cor; 
    int ano; 
    double valorDeCompra; 
    double valorDeVenda; 
    double lucro = this.valorDeCompra - this.valorDeVenda;
    boolean vendido;

    // Criando o método getLucro
    double getLucro() {
        return valorDeCompra - valorDeVenda; 
    }

}

classe TestaCarro

public class TestaCarro {

    public static void main(String[] args) {
        Carro carro = new Carro();

        carro.valorDeCompra = 10000.0;
        carro.valorDeVenda = 5000.0;

        System.out.println(carro.getLucro());
    }

}

Ao longo do curso você também vai aprender a usar construtores que são um outro jeito de resolver esse problema.

Abraços

solução!

Opa Felipe, assumo que seu Main esteja parecido com isso:

public class TestaClasse {
    public static void main(String[] args) {
        Carro c= new Carro();
        c.valorDeCompra= 5000;
        c.valorDeVenda=7000;
        System.out.println(c.lucro);
    }
}

se esse for o caso, o erro está no método Carro. Uma vez que você cria uma classe sem atributos definidos eles são startados como 0 para números, "" para strings e null para objetos. Logo, na linha que você escreve :

    double lucro = valorDeCompra - valorDeVenda;

você apenas está definindo o lucro como lucro=0-0, existem 2 soluções para esse problema. A primeira você aprenderá nas próximas aulas que é o uso de construtores para inicializar as classes já com valores para seus atibutos, a segunda é definir lucro como um método, e não um atributo. Sendo assim, o lucro só será calculado quando o seu método for chamado,evitando assim que seu lucro seja calculado antes dos atributos serem definidos. Assim:


public class TestaClasse {
    public static void main(String[] args) {
        Carro c= new Carro();
        c.valorDeCompra= 5000;
        c.valorDeVenda=7000;
        System.out.println(c.lucro());
    }
}
public class Carro {

    String marca;
    String modelo;
    String cor;
    int ano;
    double valorDeCompra;
    double valorDeVenda;
    boolean vendido;

    public double lucro() {
        return this.valorDeVenda - this.valorDeCompra;
    }

}

Dessa forma seu código deveria funcionar sem problemas.