Ajuda exercicio programação Java

Olá tudo bem?
então estou tento um problema em um exercicio da faculdade, no exercicio tenho que criar uma o seguinte:

Enunciado:
Crie uma classe com as seguintes características:

Nome da classe: **Produto** ;

Atributos da classe:

descricao (texto)

preco (real);

saldo (inteiro);

Deve existir um método construtor que inicia os valores dos atributos **descricao** , **preco** e **saldo** (nesta ordem);

Para testar a classe acima, desenvolva uma classe denominada **ProdutoDemo** com as seguintes características:

Crie um vetor com 5 objetos da classe Produto;

Leia o nome de um produto (usando a classe LeitorTeclado), pesquise no vetor de produtos e informe o preço e o saldo. Se o produto não existir, emita a mensagem “Produto inexistente no catálogo”. Faça um loop para que possa ser mostrar vários produtos. O loop deverá ser encerrado quando for digitada a palavra “fim”.

O problema que possuo é que ao tentar criar o loop para o produto e não conseguir fazer a comparação se o produto existe ou não eu recebo o error: cannot find symbol
symbol: variable vetor
location: class LeitorTeclado

        for(Produto v:vetor)
        {
            
            v.lerTeclado();
            
            
        }    

como seria possivel fazer a comparação se o objeto produto existe ou não no vetor? e como corrigo esse erro para mostrar os produtos até quanfo for digitado “fim”

Produto.java

public class Produto
{
    
    //declaração de variaveis
    public String descricao;
    public double preco;
    public int saldo;
    
    Produto(String descricao, double preco, int saldo)
    {
        this.descricao = descricao;
        this.preco = preco;
        this.saldo = saldo; 
    }        

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public int getSaldo() {
        return saldo;
    }

    public void setSaldo(int saldo) {
        this.saldo = saldo;
    }
    
    void lerTeclado()
    {
        
        System.out.println("|Descrição do produto: " + descricao + "|Preço do produto: " + preco+ "|Saldo do produto: " + saldo);        
        
    }        
}

ProdutoDemo.java:

import java.util.Scanner;

public class ProdutoDemo 
{
    
    public static void main(String[] args) 
    {
        
        Scanner entrada = new Scanner(System.in);
        
        Produto vetor[] = new Produto[5];
        
        LeitorTeclado ler1 = new LeitorTeclado();
        
        for(int i = 0;i < vetor.length; i++)
        {
            
            System.out.println("Digite a descrição do produto:");
            String descricao = entrada.next();
            System.out.println("Digite o preço do produto:");
            double preco = entrada.nextDouble();
            System.out.println("Digite o valor do saldo:");
            int saldo = entrada.nextInt();            
            
            vetor[i] = new Produto(descricao, preco, saldo);                        
            
        }
        
    ler1.ler();
           
    }
                               
}

LeitorTeclado.java

import java.util.Scanner;

public class ProdutoDemo 
{
    
    public static void main(String[] args) 
    {
        
        Scanner entrada = new Scanner(System.in);
        
        Produto vetor[] = new Produto[5];
        
        LeitorTeclado ler1 = new LeitorTeclado();
        
        for(int i = 0;i < vetor.length; i++)
        {
            
            System.out.println("Digite a descrição do produto:");
            String descricao = entrada.next();
            System.out.println("Digite o preço do produto:");
            double preco = entrada.nextDouble();
            System.out.println("Digite o valor do saldo:");
            int saldo = entrada.nextInt();            
            
            vetor[i] = new Produto(descricao, preco, saldo);                        
            
        }
        
    ler1.ler();
           
    }
                               
}

Poste o erro completo, fica mais fácil para indentificar o que está de errado.

Você pode fazer assim, de acordo com seu código:
if(vetor.contains(v))

Isso só vai funcionar se implementar corretamente o método equals da classe Produto.

Qual é o critério para considerar que um Produto já existe no seu vetor?
A descrição dele? O preço? O saldo? Todas as propriedades?

Exato, como o amigo @staroski disse, isso funciona num âmbito geral (por Objeto e todas suas características), não tendo distinção entre por exemplo um mesmo produto porém com alguma especificação diferente. Ai terá que fazer override sobre o método equals e determinar quais critérios para retornar se o valor (Produto) é igual ao objeto comparável.

1 curtida

Boa noite, so novo na programacao pretendo saber como fazer um codigo em java que manipulando o array de objectos: acumular valores totais e por cada categoria (tipo ou grupo), fazer contagens de objectos por cada categoria (tipo ou grupo), calcular algum valor médio, permitir calcular algum desconto ou Taxa de IVA,
nao faco ideia por onde comecar e como fazer. peco ajuda