1
resposta

Desafio: Hora da Prática

import java.util.ArrayList;

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

ArrayList<String> lista = new ArrayList<>();
lista.add("Batata e cenoura");
lista.add("Bolo de chocolate");
lista.add("Coca zero");
lista.add("Energético");

for (String elemento : lista) {
System.out.println(elemento);
}
}
}

Desafio 2:

class Animal

public class Animal {
private String breed;
private String name;
private int years;

public String getBreed() {
return breed;
}

public void setBreed(String breed) {
this.breed = breed;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getYears() {
return years;
}

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

public Animal(String breed, String name, int years) {
this.breed = breed;
this.name = name;
this.years = years;
}
}
  
class Cachorro

public class Cachorro extends Animal {
private String color;

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public Cachorro(String breed, String name, int years, String color) {
super(breed, name, years);
this.color = color;
}
}

class Principal

public class Principal {
static void main(String[] args) {
Cachorro cachorro = new Cachorro("Vira lata", "Branquinha", 15, "branca");

Animal animal = new Animal("Vira lata", "Pretinha", 20);

System.out.println(cachorro);

System.out.println(animal);

System.out.println("O cachorro da vizinha se chama " + animal.getName() + " e tem " + animal.getYears() + " anos de idade");

System.out.println();

System.out.println("Já o meu se chama " + cachorro.getName() + " e é da cor " + cachorro.getColor() );
}
}

Desafio 3:

public class Principal {
static void main(String[] args) {
Cachorro cachorro = new Cachorro("Vira lata", "Branquinha", 15, "branca");

Animal animal = new Animal("Vira lata", "Pretinha", 20);

if (animal instanceof Cachorro ) {
Cachorro cachorrO = (Cachorro) animal;

} else {
System.out.println("O objeto não é um Cachorro");
}

System.out.println(cachorro);

System.out.println(animal);

System.out.println("O cachorro da vizinha se chama " + animal.getName() + " e tem " + animal.getYears() + " anos de idade");

System.out.println();

System.out.println("Já o meu se chama " + cachorro.getName() + " e é da cor " + cachorro.getColor() );
}
}

Desafio 4:

class Produto

import java.time.LocalDate;

public class Produto {
private String name;
private double price;
private int validity;
private int quantidade;

public Produto(String name, double price, int validity, int quantidade) {
this.name = name;
this.price = price;
this.validity = validity;
this.quantidade = quantidade;
}

public int getQuantidade() {
return quantidade;
}

public String getName() {
return name;
}

public double getPrice() {
return price;
}

public int getValidity() {
return validity;
}
}

class Principal

import java.util.ArrayList;

public class Principal {
public static void main(String[] args) {
Produto produto1 = new Produto("Peito de frango", 17.99, 12-03-2016, 2);
Produto produto2 = new Produto("Creme de leite", 2.89, 04-11-2027, 3);
Produto produto3 = new Produto("Batata palha", 15.57, 18-9-2026, 1);

ArrayList<Produto> lista = new ArrayList<>();
lista.add(produto1);
lista.add(produto2);
lista.add(produto3);

double preco =0;
for (Produto produto : lista) {
preco += produto.getPrice();

}

///double precoMedio =0;
///for (Produto produto: lista) {
///precoMedio += produto.getQuantidade() / produto.getPrice();
/// }

double media = preco / lista.size();

System.out.println("Preço médio dos produtos " + media);

}
}
1 resposta

Olá, Henrique. Como vai?

Parabéns pela dedicação em resolver os desafios! É excelente ver como você aplicou conceitos fundamentais de Java, como a manipulação de ArrayList, o uso de Herança com a palavra-chave extends e a verificação de tipos com o instanceof.

Gostaria de destacar alguns pontos e dar sugestões para deixar seu código ainda mais preciso:

  • Sobrescrita do método toString(): No Desafio 2, você usou System.out.println(cachorro);. Por padrão, o Java imprimirá o endereço de memória do objeto. Para que apareçam os dados do animal (como nome e raça), você pode sobrescrever o método toString() na classe Animal.
  • Uso do instanceof: No Desafio 3, você fez a verificação correta. O instanceof é essencial para evitar o erro de ClassCastException ao tentar transformar uma classe pai em uma classe filha quando o objeto não é compatível.
  • Cálculo da Média: No Desafio 4, seu cálculo de média está logicamente correto dividindo o total de preços pelo tamanho da lista.

Sobre o Desafio 4, notei um pequeno detalhe na passagem das datas no construtor de Produto:

Produto produto1 = new Produto("Peito de frango", 17.99, 12-03-2016, 2);

Em Java, se você passa 12-03-2016 diretamente, o compilador interpreta como uma operação aritmética (subtração) e resultará em um número inteiro negativo. Para trabalhar com datas de forma profissional, o ideal é usar a classe LocalDate. Caso queira manter como um campo simples apenas para o exercício, você pode usar uma String ou apenas o ano como int.

Aqui está uma sugestão para o seu método toString na classe Animal, que melhoraria a saída do seu Desafio 2:

@Override
public String toString() {
    return "Animal: " + name + " | Raça: " + breed + " | Idade: " + years;
}

Ao adicionar isso, o comando System.out.println(animal); exibirá o texto formatado em vez do código de referência.

Continue com esse ótimo ritmo de estudos!

Espero que possa ter lhe ajudado!