1
resposta

[Sugestão] Desafio Construtores

import java.util.ArrayList;
import java.util.Scanner;

public class App {
   public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Boolean controle = true;
    ArrayList<Produtos> ListaDeProdutos = new ArrayList<>();
    
    while(controle){
        
        System.out.println("Dseja cadastrar um produto(sim / nao): ");
        String testador = scanner.nextLine();
        if (testador.equalsIgnoreCase("sim")){

            System.out.println("Qual o nome do Produto: ");
            String nome = scanner.nextLine();
            System.out.println("Qual o preço do produto: ");
            double preco = scanner.nextDouble();
            System.out.println("Se o produto for perecível digite 1 se não for digite 2: ");
            int perecivel = scanner.nextInt();

            scanner.nextLine();

            if (perecivel == 1){
                System.out.println("Digite a data de validade:(mes/ano) ");
                String dataValidade = scanner.nextLine();

                System.out.println("Digite a quantidade em estoque: ");
                int quantidade = scanner.nextInt();

                scanner.nextLine();

                ProdutoPerecivel produtoperecivel = new ProdutoPerecivel(nome, preco, quantidade, nome);
                ListaDeProdutos.add(produtoperecivel);
            }

            else{
                System.out.println("Digite a quantidade em estoque: ");
                int quantidade = scanner.nextInt();
    
                scanner.nextLine();
                           
                Produtos produto = new Produtos(nome, preco, quantidade);
                ListaDeProdutos.add(produto);
                
                System.out.println("Produto " + nome + " cadastado com sucesso");
            }
           
        }    
        else{
            System.out.println("Fechando o Programa.....");
            controle = false;
        } 
           
    }
    
    System.out.println(ListaDeProdutos.toString()); 
   }  
}  
    
import java.util.Scanner;

public class Produtos {

    private String nome;
    private double preco;
    private int quantidade;

    public Produtos(String nome, double preco, int quantidade){
        this.nome = nome;
        this.preco = preco;
        this.quantidade = quantidade;

    }

    public String getNome(){
        return nome;
    }

    public double getPreco() {
        return preco;
    }

    public int getQuantidade() {
        return quantidade;
    }
    @Override
    public String toString(){
        return "Produto: " + nome + " | Preço: " + preco + " | Quantidade: " + quantidade;
    }
   

 
}

public class ProdutoPerecivel extends Produtos {
    private String dataValidade;
    
    public ProdutoPerecivel(String nome, double preco, int quantidade, String dataValidade){
        super(nome, preco, quantidade);
        this.dataValidade = dataValidade;
        
    }

    @Override
    public String toString(){
        return super.toString() + " | Validade: " + dataValidade;
    }
}
1 resposta

Olá, Thiago, como vai?

Seu exercício demonstra uma excelente compreensão sobre herança e o uso da palavra-chave super para invocar o construtor da classe mãe. A implementação do método toString para formatar a saída dos dados também foi aplicada corretamente, garantindo que as informações do produto e da data de validade sejam exibidas de forma clara.

Notei apenas que, na linha de criação do objeto ProdutoPerecivel, a variável nome foi passada no lugar da variável dataValidade, o que pode causar uma exibição incorreta dos dados. Fora esse detalhe de digitação na chamada do construtor, sua lógica de repetição com Scanner e o uso de ArrayList estão muito bem executados.

Parabéns pelo empenho em ir além do proposto e criar um sistema de interação com o usuário. Continue compartilhando seus códigos e evoluindo nos estudos. O fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!