1
resposta

[Sugestão] Problema Carro

Meu código: Class Car

import java.util.Scanner;

public class Car {

    public String Model;
    private String mark;
    private double valueYear1;
    private double valueYear2;
    private double valueYear3;
    private int years;

    Scanner scanner = new Scanner(System.in);

    public String getModel() {
        return Model;
    }

    public void setCarModel(String carModel) {
        this.Model = carModel;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    public double getValueYear1() {
        return valueYear1;
    }

    public void setValueYears(double valueYears) {
        this.valueYear1 = valueYears;
    }

    public double getValueYear2() {
        return valueYear2;
    }

    public void setValueYear2(double valueYear2) {
        this.valueYear2 = valueYear2;
    }

    public double getValueYear3() {
        return valueYear3;
    }

    public void setValueYear3(double valueYear3) {
        this.valueYear3 = valueYear3;
    }

    public int getYears() {
        return years;
    }

    public void setYears(int years) {
        this.years = years;
    }

    public void printCar() {
        System.out.println("Qual o modelo do veículo?");
        setCarModel(this.Model = scanner.nextLine());
        System.out.println("Qual a marca?");
        setMark(this.mark = scanner.nextLine());
    }

    public void printValue() {
        System.out.println("Insira os 3 primeiros anos do veículo: ");
        setYears(this.years = scanner.nextInt());
        setYears(this.years = scanner.nextInt());
        setYears(this.years = scanner.nextInt());
        System.out.println("Insira o valor do veículo no primeiro ano: ");
        setValueYears(this.valueYear1 = scanner.nextDouble());
        System.out.println("Insira o valor do veículo no segundo ano: ");
        setValueYears(this.valueYear2 = scanner.nextDouble());
        System.out.println("Insira o valor do veículo no terceiro ano: ");
        setValueYears(this.valueYear3 = scanner.nextDouble());
    }

    public void printall() {
        System.out.println("========== SEUS DADOS ==========");
        System.out.println("Marca do veículo: " + getMark());
        System.out.println("Modelo do veículo: " + getModel());
        System.out.println("Valor do veículo no primeiro ano " + getValueYear1());
        System.out.println("Valor do veículo no segundo ano " + getValueYear2());
        System.out.println("Valor do veículo no terceiro ano " + getValueYear3());
        System.out.println("O maior valor é: " + valueGreater());
        System.out.println("O menor valor é: " + valueLowest());
    }

    private double valueLowest() {
        if (getValueYear1() < getValueYear2()) {
            if (getValueYear1() < getValueYear3()) {
                return getValueYear1();
            } else {
                return getValueYear3();
            }
        } else {
            if (getValueYear2() < getValueYear3()) {
                return getValueYear2();
            } else {
                return getValueYear3();
            }
        }
    }

    private double valueGreater() {
        if (getValueYear1() > getValueYear2()) {
            if (getValueYear1() > getValueYear3()) {
                return getValueYear1();
            } else {
                return getValueYear3();
            }
        } else {
            if (getValueYear2() > getValueYear3()) {
                return getValueYear2();
            } else {
                return getValueYear3();
            }
        }
    }
}

Class ModelCar:

import java.util.Scanner;

public class ModelCar extends Car {
    private int doors;

    Scanner scanner = new Scanner(System.in);

    public int getDoors() {
        return doors;
    }
    public void setDoors(int doors) {
        this.doors = doors;
    }


    public void doors(){
        System.out.println("Insira a quantidade de portas:");
        setDoors(this.doors = scanner.nextInt());
    }
    public void printDoor(){
        System.out.println("Quantidade de portas: "+ this.getDoors());
    }
}

Main:

public class Main {
    public static void main(String[] args) {
        Car car = new Car();
        ModelCar model = new ModelCar();

        car.printCar();
        model.doors();
        car.printValue();
        car.printall();
        model.printDoor();

    }
}

Obs: tive um problema com relação ao menor número, eu sempre dou os exemplos de valor de "4000, 5000, 10.000" e sempre me mostra que o menor valor é o de 5000, por que?

1 resposta

Oi Eduardo,

Analisando seu código, o problema com o menor valor está na forma como você está utilizando o Scanner para capturar os valores dos anos. No método printValue(), você chama setYears() três vezes, mas sobrescreve o valor de this.years a cada chamada, ou seja, você está armazenando o último ano digitado e não os três anos. Além disso, você não está usando o valor dos anos em nenhum momento.

O problema real está em como você está capturando os valores do carro. Você está usando setValueYears() para setar todos os valores, mas sempre sobrescrevendo o valueYear1. O correto seria usar setValueYear1(), setValueYear2() e setValueYear3() para setar cada valor em seu respectivo atributo.

Segue o código corrigido do método printValue() e a correção dos métodos que setam os valores:

public void printValue() {
    System.out.println("Insira o valor do veículo no primeiro ano: ");
    setValueYear1(scanner.nextDouble());
    System.out.println("Insira o valor do veículo no segundo ano: ");
    setValueYear2(scanner.nextDouble());
    System.out.println("Insira o valor do veículo no terceiro ano: ");
    setValueYear3(scanner.nextDouble());
}

public void setValueYear1(double valueYear1) {
    this.valueYear1 = valueYear1;
}

public void setValueYear2(double valueYear2) {
    this.valueYear2 = valueYear2;
}

public void setValueYear3(double valueYear3) {
    this.valueYear3 = valueYear3;
}

Com essa correção, os valores serão armazenados corretamente e a comparação entre eles funcionará como esperado.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓