2
respostas

[Desafio: hora da prática] Está correto?

1 - Crie um ArrayList de strings e utilize um loop foreach para percorrer e imprimir cada elemento da lista.

package Desafio01;
import java.util.ArrayList;

public class Principal {
    public static void main(String[] args) {
        ArrayList<Principal> lista = new ArrayList<>();

        var objeto01 = new Principal();
        var objeto02 = new Principal();
        var objeto03 = new Principal();

        lista.add(objeto01);
        lista.add(objeto02);
        lista.add(objeto03);

        for (Principal index: lista) {
            System.out.println(index);
        }

    }
}

2 - Crie uma classe Animal e uma classe Cachorro que herda de Animal. Em seguida, crie um objeto da classe Cachorro e faça o casting para a classe Animal.

package Desafio02;

public class Animal {
}
package Desafio02;

public class Cachorro extends Animal {
}
package Desafio02;

public class Principal {
    public static void main(String[] args) {
        Cachorro meuCachorro = new Cachorro();
        Animal novoAnimal = (Animal) meuCachorro;
    }
}

3 - Modifique o Exercício 2 para incluir uma verificação usando instanceof para garantir que o objeto seja do tipo correto antes de fazer o casting.

package Desafio02;

public class Animal {
}
package Desafio02;

public class Cachorro extends Animal {
}
package Desafio02;

public class Principal {
    public static void main(String[] args) {
        Cachorro meuCachorro = new Cachorro();

        if (meuCachorro instanceof Cachorro) {
            System.out.println("É um cachorro");
            Animal novoAnimal = (Animal) meuCachorro;
        } else {
            System.out.println("Não é um cachorro");
        }
    }
}

4 - Crie uma classe Produto com propriedades como nome e preço. Em seguida, crie uma lista de produtos e utilize um loop para calcular e imprimir o preço médio dos produtos.

package Desafio04;
import java.util.ArrayList;

public class Produto {
    //variables
    private String nome;
    private double preco;

    //constructor
    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }

    //getters
    public String getNome() {
        return nome;
    }

    public double getPreco() {
        return preco;
    }

    public static void main(String[] args) {
        //objects
        var produto01 = new Produto("Mouse", 159.99);
        var produto02 = new Produto("Teclado", 130.50);
        var produto03 = new Produto("Headset", 199.99);

        ArrayList<Produto> lista = new ArrayList<>();
        lista.add(produto01);
        lista.add(produto02);
        lista.add(produto03);

        //loop to add prices
        double somaPreco = 0;
        for (Produto produto : lista) {
            somaPreco += produto.getPreco();
        }

        //calculate average prices
        double precoMedio = somaPreco / lista.size();

        System.out.println(precoMedio);
    }
}
2 respostas

5 - Crie uma interface Forma com um método calcularArea(). Implemente a interface em duas classes, por exemplo, Circulo e Quadrado. Em seguida, crie uma lista de formas (objetos da interface Forma) e utilize um loop para calcular e imprimir a área de cada forma.

package Desafio05;

public interface Forma {
    double calcularArea();
}
package Desafio05;
import java.util.ArrayList;

public class Quadrado implements Forma {
    //variables
    private int base;
    private int altura;

    //constructor
    public Quadrado(int base, int altura) {
        this.base = base;
        this.altura = altura;
    }

    //getters
    public int getBase() {
        return base;
    }

    public int getAltura() {
        return altura;
    }

    @Override
    public double calcularArea() {
        return base * altura;
    }

    public static void main(String[] args) {
        var quadrado1 = new Quadrado(5, 5);
        var quadrado2 = new Quadrado(10, 10);
        var quadrado3 = new Quadrado(20, 20);

        ArrayList<Quadrado> lista = new ArrayList<>();
        lista.add(quadrado1);
        lista.add(quadrado2);
        lista.add(quadrado3);

        for (Quadrado quadrado : lista) {
            System.out.println(quadrado.calcularArea());
        }
    }
}
package Desafio05;
import java.util.ArrayList;

public class Circulo implements Forma {
    //variables
    private double raio;

    //constructor
    public Circulo(double raio) {
        this.raio = raio;
    }

    //getter
    public double getRaio() {
        return raio;
    }

    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }

    public static void main(String[] args) {
        var circulo1 = new Circulo(5);
        var circulo2 = new Circulo(10);
        var circulo3 = new Circulo(20);

        ArrayList<Circulo> lista = new ArrayList<>();
        lista.add(circulo1);
        lista.add(circulo2);
        lista.add(circulo3);

        for (Circulo circulo : lista) {
            System.out.println(circulo.calcularArea());
        }
    }
}

6 - Crie uma classe ContaBancaria com propriedades como número da conta e saldo. Em seguida, crie uma lista de contas bancárias com diferentes saldos. Utilize um loop para encontrar e imprimir a conta com o maior saldo.

package Desafio06;
import java.util.ArrayList;

public class ContaBancaria {
    //variables
    private int numeroDaConta;
    private int saldo;

    //constructor
    public ContaBancaria(int numeroDaConta, int saldo) {
        this.numeroDaConta = numeroDaConta;
        this.saldo = saldo;
    }

    //getters
    public int getNumeroDaConta() {
        return numeroDaConta;
    }

    public int getSaldo() {
        return saldo;
    }

    public static void main(String[] args) {
        var conta1 = new ContaBancaria(123, 2100);
        var conta2 = new ContaBancaria(456, 1600);
        var conta3 = new ContaBancaria(789, 1389);

        ArrayList<ContaBancaria> lista = new ArrayList<>();
        lista.add(conta1);
        lista.add(conta2);
        lista.add(conta3);

        ContaBancaria contaComMaiorSaldo = null;
        double maiorSaldo = Double.NEGATIVE_INFINITY;
        for (ContaBancaria contaBancaria : lista) {
            if (contaBancaria.getSaldo() > maiorSaldo) {
                maiorSaldo = contaBancaria.getSaldo();
                contaComMaiorSaldo = contaBancaria;
            }
        }

        System.out.println(contaComMaiorSaldo.getNumeroDaConta());
    }
}
  • Pergunta 1

A pergunta pede para criar um ArrayList de strings, mas o seu ArrayList é de objetos da classe Principal. Ao adicionar elementos na lista, você deve adicionar strings, e não instâncias da classe Principal. O loop foreach deve percorrer a lista de strings e imprimir cada elemento. Vou enviar um exemplo para estudo:

public class Principal {
    public static void main(String[] args) {
        ArrayList<String> lista = new ArrayList<>();

        String stringUm = "texto um";
        String stringDois = "texto dois";
        String stringTres = "texto tres";

        lista.add(stringUm);
        lista.add(stringDois);
        lista.add(stringTres);

        for (String elemento : lista) {
            System.out.println(elemento);
        }
    }
}
  • Pergunta 2
Seu codigo está correto, tanto para a criação das classes Animal e Cachorro, e também para o casting do objeto meuCachorro para a classe Animal. 
  • Pergunta 3
A condicional que adicionou para a verificação antes do casting está correto também.
  • Pergunta 4
Codigo também está correto.