Não consigo resolver esta questão de um exercicio

Então, não consigo resolver um exercicio, relutei e tentei fazer eu mesmo porem sem sucesso

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 informado vários produtos. O loop deverá ser encerrado quando for digitada a palavra “fim”.

Produto.java
public class Produto
{

    //declaração de variaveis
    public String descricao;
    public double preco;
    public int saldo;
    
    public void 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;
    }
    
    
    
}

ProdutoDemo.java:
public class ProdutoDemo
{

    public static void main(String[] args) 
    {

        Produto prod[] = new Produto[5]; 
        
        prod.
   
    }
    
}

LeitorTeclado.java:
import java.util.Scanner;

public class LeitorTeclado 
{
    
    public void main(String[] args) 
    {
        
        Scanner entrada = new Scanner(System.in);
        
        Produto prod[] = new Produto[5];
        
        for(int i = 0; i<5; i++)
        {
            prod[i] = new Produto();
            
            String descricao = entrada.next();
            double preco = entrada.nextDouble();
            int saldo = entrada.nextInt();
            
            prod[i].descricao = descricao;
            prod[1].preco =  preco;
            prod[1].saldo = saldo;
        }
        
        
    }
    
}

Você tem 2 métodos main.
E um deles não é static.
Coloca a lógica que tá na LeitorTeclado na classe ProdutoDemo.

Então, o professor pediu no enunciado para que a leitura fosse feita em outra classe

Será que ao dizer LeitorTeclado ele não se refere a classe Scanner?

Bom dia, vc está acessando prod[i]. descrição = descrição isso está errado vc tem tem um construtor que está com void e para acessar a classe produto tem que usar os getters e setters, com o construtor da classe produto vc é obrigado a instanciar ele já com os argumentos se vc criou um objeto do tipo produto com construtor sem os argumentos e não deu erro então seu construtor está errado

Se as propriedades não estiverem como privadas (o recomendado é que estejam, dentro do princípio do encapsulamento), dá pra acessar elas sem getters/setters.

O código dele está encapsulado não deveria ser acessado de forma correta? Como é um exercício não um projeto certamente deveria ser privado o acesso ou até mesmo protegido. Mais como é só um exercício e ele colocou um construtor e fez um encapsulamento mais do que nunca ele deveria ter acessado por get e set, meu comentário foi somente para este tópico não de forma geral