2
respostas

ArrayList de Strings e Loop Foreach

Exercício 1: ArrayList de Strings com foreach

import java.util.ArrayList;

public class Exercicio1 {
    public static void main(String[] args) {
        // Crie um ArrayList de strings
        ArrayList<String> frutas = new ArrayList<>();

        // Adicione elementos à lista
        frutas.add("Maçã");
        frutas.add("Banana");
        frutas.add("Laranja");
        frutas.add("Morango");
        frutas.add("Uva");

        System.out.println("--- Elementos da lista de frutas ---");

        // Utilize um loop foreach para percorrer e imprimir cada elemento
        for (String fruta : frutas) {
            System.out.println(fruta);
        }
    }
}

Exercício 2: Casting de Objeto (Animal e Cachorro) // Animal.java class Animal { public void fazerBarulho() { System.out.println("Animal fazendo barulho..."); } }

// Cachorro.java class Cachorro extends Animal { @Override public void fazerBarulho() { System.out.println("Au au!"); }

public void latir() {
    System.out.println("Latindo...");
}

}

// Exercicio2.java

public class Exercicio2 {
    public static void main(String[] args) {
        // Crie um objeto da classe Cachorro
        Cachorro meuCachorro = new Cachorro();
        meuCachorro.latir(); // Método específico de Cachorro
        meuCachorro.fazerBarulho(); // Método sobrescrito de Animal

        // Faça o casting para a classe Animal
        Animal meuAnimal = meuCachorro; // Upcasting implícito (seguro)

        System.out.println("\n--- Após o casting para Animal ---");
        meuAnimal.fazerBarulho(); // Chama o método de Cachorro devido ao polimorfismo
        // meuAnimal.latir(); // Isso daria erro de compilação, pois meuAnimal é do tipo Animal
                               // e o método latir() não existe na classe Animal.
    }
}

Exercício 3: instanceof e Casting Seguro

// Exercicio3.java
public class Exercicio3 {
    public static void main(String[] args) {
        Animal algumAnimal = new Cachorro(); // Um Cachorro referenciado como Animal
        Animal outroAnimal = new Animal(); // Um Animal puro

        System.out.println("--- Verificando e fazendo casting ---");

        // Verificando o primeiro objeto
        if (algumAnimal instanceof Cachorro) {
            System.out.println("algumAnimal é um Cachorro!");
            Cachorro meuCachorro = (Cachorro) algumAnimal; // Casting seguro
            meuCachorro.latir(); // Agora podemos chamar métodos específicos de Cachorro
        } else {
            System.out.println("algumAnimal não é um Cachorro.");
        }

        System.out.println("\n--- Verificando o segundo objeto ---");

        // Verificando o segundo objeto
        if (outroAnimal instanceof Cachorro) {
            System.out.println("outroAnimal é um Cachorro!");
            Cachorro meuCachorro2 = (Cachorro) outroAnimal; // Isso não será executado
            meuCachorro2.latir();
        } else {
            System.out.println("outroAnimal não é um Cachorro.");
        }
    }
}

Exercício 4: Lista de Produtos e Preço Médio

import java.util.ArrayList;

// Produto.java
class Produto {
    private String nome;
    private double preco;

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

    public String getNome() {
        return nome;
    }

    public double getPreco() {
        return preco;
    }
}

// Exercicio4.java
public class Exercicio4 {
    public static void main(String[] args) {
        // Crie uma lista de produtos
        ArrayList<Produto> produtos = new ArrayList<>();

        // Adicione produtos à lista
        produtos.add(new Produto("Caneta", 1.50));
        produtos.add(new Produto("Caderno", 12.00));
        produtos.add(new Produto("Lápis", 0.75));
        produtos.add(new Produto("Mochila", 85.50));
        produtos.add(new Produto("Borracha", 1.20));

        double somaPrecos = 0;

        System.out.println("--- Lista de Produtos ---");
        // Utilize um loop para calcular a soma dos preços
        for (Produto produto : produtos) {
            System.out.println("Produto: " + produto.getNome() + ", Preço: R$" + String.format("%.2f", produto.getPreco()));
            somaPrecos += produto.getPreco();
        }

        // Calcule o preço médio
        double precoMedio = 0;
        if (!produtos.isEmpty()) { // Evita divisão por zero se a lista estiver vazia
            precoMedio = somaPrecos / produtos.size();
        }

        System.out.println("\n--- Resumo ---");
        System.out.println("Total de produtos: " + produtos.size());
        System.out.println("Soma total dos preços: R$" + String.format("%.2f", somaPrecos));
        System.out.println("Preço médio dos produtos: R$" + String.format("%.2f", precoMedio));
    }
}
2 respostas

Exercício 5: Interface Forma com Polimorfismo

import java.util.ArrayList;

// Forma.java (Interface)
interface Forma {
    double calcularArea();
    void exibirNome(); // Adicionado para melhor identificação
}

// Circulo.java
class Circulo implements Forma {
    private double raio;

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

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

    @Override
    public void exibirNome() {
        System.out.print("Círculo");
    }
}

// Quadrado.java
class Quadrado implements Forma {
    private double lado;

    public Quadrado(double lado) {
        this.lado = lado;
    }

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

    @Override
    public void exibirNome() {
        System.out.print("Quadrado");
    }
}

// Exercicio5.java
public class Exercicio5 {
    public static void main(String[] args) {
        // Crie uma lista de formas (objetos da interface Forma)
        ArrayList<Forma> formas = new ArrayList<>();

        // Adicione diferentes formas à lista
        formas.add(new Circulo(5.0)); // Raio 5
        formas.add(new Quadrado(4.0)); // Lado 4
        formas.add(new Circulo(2.5)); // Raio 2.5
        formas.add(new Quadrado(7.0)); // Lado 7

        System.out.println("--- Calculando áreas das formas ---");

        // Utilize um loop para calcular e imprimir a área de cada forma
        for (Forma forma : formas) {
            forma.exibirNome(); // Chama o método para exibir o tipo da forma
            System.out.println(" com área: " + String.format("%.2f", forma.calcularArea()));
        }
    }
}

Exercício 6: Lista de Contas Bancárias e Maior Saldo

import java.util.ArrayList;

// ContaBancaria.java
class ContaBancaria {
    private String numeroConta;
    private double saldo;

    public ContaBancaria(String numeroConta, double saldo) {
        this.numeroConta = numeroConta;
        this.saldo = saldo;
    }

    public String getNumeroConta() {
        return numeroConta;
    }

    public double getSaldo() {
        return saldo;
    }

    @Override
    public String toString() {
        return "Conta: " + numeroConta + ", Saldo: R$" + String.format("%.2f", saldo);
    }
}

// Exercicio6.java
public class Exercicio6 {
    public static void main(String[] args) {
        // Crie uma lista de contas bancárias
        ArrayList<ContaBancaria> contas = new ArrayList<>();

        // Adicione contas com diferentes saldos
        contas.add(new ContaBancaria("12345-6", 1500.75));
        contas.add(new ContaBancaria("78901-2", 320.50));
        contas.add(new ContaBancaria("34567-8", 5000.00));
        contas.add(new ContaBancaria("90123-4", 80.25));
        contas.add(new ContaBancaria("56789-0", 2500.90));
        contas.add(new ContaBancaria("11223-3", 5000.00)); // Outra conta com saldo igual ao maior

        ContaBancaria contaMaiorSaldo = null;

        System.out.println("--- Contas Bancárias ---");
        for (ContaBancaria conta : contas) {
            System.out.println(conta);
        }

        System.out.println("\n--- Encontrando a conta com o maior saldo ---");

        // Utilize um loop para encontrar a conta com o maior saldo
        for (ContaBancaria conta : contas) {
            if (contaMaiorSaldo == null || conta.getSaldo() > contaMaiorSaldo.getSaldo()) {
                contaMaiorSaldo = conta;
            }
        }

        // Imprima a conta com o maior saldo
        if (contaMaiorSaldo != null) {
            System.out.println("A conta com o maior saldo é: " + contaMaiorSaldo);
        } else {
            System.out.println("Não há contas na lista.");
        }

        // Caso haja múltiplas contas com o mesmo maior saldo, você pode querer listá-las:
        System.out.println("\n--- Contas com o maior saldo (se houver mais de uma) ---");
        if (contaMaiorSaldo != null) {
            for (ContaBancaria conta : contas) {
                if (conta.getSaldo() == contaMaiorSaldo.getSaldo()) {
                    System.out.println(conta);
                }
            }
        }
    }
}

Oii, Daiane!

Obrigada por compartilhar seu código.

Você avançou muito bem com os exercícios! É ótimo ver como você explorou ArrayList, polimorfismo, casting seguro e até interface com herança múltipla via implementação. Seu uso do instanceof e das boas práticas como String.format mostram atenção aos detalhes e clareza no propósito dos exercícios.

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