1
resposta

[Desafio] ArrayLists, casting de objeto e instanceof -- está correto?

  1. Crie um ArrayList de strings e utilize um loop foreach para percorrer e imprimir cada elemento da lista.
    
ArrayList<String>materialEscolar = new ArrayList<> ();
    materialEscolar.add(caderno)
    materialEscolar.add(lápis)
    materialEscolar.add(caneta)
    materialEscolar.add(estojo)
    materialEscolar.add(borracha)
    System.out.println("Lista material escolar:");
    for(String item: materialEscolar): {
        System.out.println(item.toString());
    
    }
  1. 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.
    
Public class Animal {
    String nome;
    String raça;
    String cor;
    
    public void setNome(String nome) { this.nome = nome;  }
    public void seRaça(String raça) { this.nome = raça;  }
    public void seCor(String cor) { this.nome = cor;  }
    
}
public class Cachorro extends Animal {

    int idade;

}
publica class main{
       public static void main(String[] args){
        Cachorro cachorro = new Cachorro(); //criando o objeto da classe cachorro --- instância da classe cachorro
        Animal animal = (Animal) cachorro; // casting do objeto 
       }
      
//se eu digo que todo cahorro é animal, por que ainda sim devo fazer casting?
//quando devo fazer casting? 
//nesse caso, casting é para acessar atributos da classe chachorro, como a idade?

}
  1. 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.
    
publica class main{
       public static void main(String[] args){
       Animal animal = new Cachorro(); // por que tenho que criar essa referência antes?
        if(ANimal instanceof cachorro){
            Cachorro cachorro = animal;
        
        } else {
                    System.out.println("Objeto não é animal cachorro");
        
        }
        
        
     }
      
}
  1. 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.
    
public class Produto{
    Private String nome;
    Private double preco;
    
 public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;

}

// acessos get e set 

}
publica class main{
    public static void main(String[] args){
    
    ArrayList<Produtos> listaProdutos = new ArrayList<>();
    listaProduto.add("lapis", 1,20);
    listaProduto.add("caneta", 2,50);
    listaProduto.add("Caderno", 18,80);
    
    // percorrendo a lista pelo for-each da classe produto 
    
    double somaPrecos = 0;
    for (Produto produto = listaProdutos){
         somaPrecos += produto.getPreco();
    
    }
    
    //somente expressão matemática
    double precoMedio = somaPrecos / listaProdutos.size();
    System.out.println("Preço médio dos produtos: " + precoMedio); //exibição do resultado
    
    }

}
1 resposta

Olá, Raquel. Tudo bem?

Deixarei algumas análises, sugestões de correção e melhoria para o seu código.

  1. ArrayList de Strings e Loop Foreach:

    No seu código, parece que você esqueceu de colocar aspas ao adicionar os itens à lista. Além disso, tem um pequeno erro de sintaxe no loop foreach. Aqui está a correção:

    ArrayList<String> materialEscolar = new ArrayList<>();
    materialEscolar.add("caderno");
    materialEscolar.add("lápis");
    materialEscolar.add("caneta");
    materialEscolar.add("estojo");
    materialEscolar.add("borracha");
    
    System.out.println("Lista material escolar:");
    for(String item : materialEscolar) {
        System.out.println(item);
    }
    
  2. Casting de Objeto:

    Sobre o casting, quando você cria um objeto de uma subclasse (Cachorro) e o atribui a uma referência da superclasse (Animal), não é necessário fazer casting explícito. No entanto, se você quiser acessar métodos ou atributos específicos da subclasse, precisará fazer o casting de volta para a subclasse. No seu exemplo, o casting não é necessário para acessar atributos da classe Animal, mas seria se você quisesse acessar algo específico de Cachorro.

  3. Uso de instanceof:

    No seu código, há um erro de sintaxe. Além disso, o instanceof é usado para garantir que o objeto é de um tipo específico antes de fazer o casting. Aqui está a correção:

    public class Main {
        public static void main(String[] args) {
            Animal animal = new Cachorro(); // Criação de um objeto Cachorro
            if (animal instanceof Cachorro) {
                Cachorro cachorro = (Cachorro) animal; // Casting seguro
                // Agora você pode acessar métodos e atributos de Cachorro
            } else {
                System.out.println("Objeto não é um cachorro");
            }
        }
    }
    
  4. Lista de Produtos e Cálculo do Preço Médio:

    Parece que há um erro ao adicionar produtos à lista. Você deve criar objetos Produto e adicioná-los à lista. Além disso, há um erro no loop foreach. Aqui está a correção:

    public class Produto {
        private String nome;
        private double preco;
    
        public Produto(String nome, double preco) {
            this.nome = nome;
            this.preco = preco;
        }
    
        public double getPreco() {
            return preco;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            ArrayList<Produto> listaProdutos = new ArrayList<>();
            listaProdutos.add(new Produto("lápis", 1.20));
            listaProdutos.add(new Produto("caneta", 2.50));
            listaProdutos.add(new Produto("caderno", 18.80));
    
            double somaPrecos = 0;
            for (Produto produto : listaProdutos) {
                somaPrecos += produto.getPreco();
            }
    
            double precoMedio = somaPrecos / listaProdutos.size();
            System.out.println("Preço médio dos produtos: " + precoMedio);
        }
    }
    

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!