Como instanciar o objeto produto em uma classe em java? Ele será um vetor dinâmico

public class Produto {
private String descricao[];
private double preco[];
int total;

public Produto(String descricao, double preco) {		
	this.descricao[total++] = descricao;
	this.preco[total++] = preco;		
}

public double getTotal() {		
	return total;		
}

public String imprimeProduto(String descricao, double total) {
	return "Produto: "  + this.descricao + " Total:" + this.total;
}

}

Um produto possui várias descrições e vários preços?
Isso aí está errado.
Esses atributos não devem ser arrays.

Não estou entendo…
E como seria em sua opinião?
Pesquisando sobre como trabalha com vetores foi assim que entendi.

Um produto possui um preço e uma descrição.

public class Produto {

    private String descricao;
    private double preco;

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

Criando um produto:

Produto meuProduto = new Produto("Arroz", 42.75);

Criando um array de produtos

Produto[] meusProdutos = new Produto[quantidade];
meusProdutos[0] = new Produto ("Tomate", 3.99);
meusProdutos[1] = new Produto ("Cebola", 2.59);
meusProdutos[2] = new Produto ("Batatinha", 4.25);
// Assim sucessivamente para cada posição do array.

Entendi!

Obrigado!

Bom dia!

Não funcionou a criação do vetor, deu erro…
Não estou conseguindo criar a classe Venda, tento criar um vetor de produtos nela e está dando erros que não entendo. Criei a classe Produto, mas a classe Venda não vê o preço nessa classe, e não estou conseguindo acrescentar produtos no método.

void adicioneProduto(Produto[] p)

import java.util.*;

public class Venda {
int quantProd = 5;
Date data = new Date();
private Cliente cliente;
private Produto[] produto = new Produto[quantProd];
private int total=0;
private int numProdutos=0;
private int i = 0;

produto[0] = new Produto ("arroz", 7.00); --> está dando erro de sitaxe
	
public Venda(Date data) {		
	this.produto = new Produto[quantProd];
	this.cliente = new Cliente(null); 
	this.data = data;
	this.total = 0;
}

public Venda(Date data, Cliente cliente) {		
	this.produto = new Produto[quantProd];
	this.cliente = new Cliente();
	this.data = data;
	this.total = 0;			
}

public Venda(Date data, Cliente cliente, Produto[] produto) {		
	this.produto = new Produto[quantProd];
	this.cliente = new Cliente(null, null);
	this.data = data;
	this.total = 0;			
}

public double getTotal() {		
		total +=  produto[i].preco;
	return total;		
}

void adicioneProduto(Produto[] p) {
	for p in produto;
	p[i++] = this.produto.descricao;				
}


public Produto getProduto(int i) {
	return this.getProduto(i);
}

public int getNumProdutos() {
    return this.numProdutos;
}

public String imprimeVenda() {
	return data + " " + cliente + " " + this.produto[i].descricao + " " + produto[i].preco; 
}

}

Edita o seu post e formata o código java clicando no botão </>.
Posta também o fonte da sua classe Produto.

Bom dia!
Estou encaminhando os códigos fonte…

public class Produto {
private String descricao;
private double preco;
int total=0;

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

public double getTotal() {		
	return total;		
}

public String imprimeProduto(String descricao, double preco) {
	return "Produto: "  + this.descricao + " Total:" + this.total;
}

}
identar texto pré-formatado por 4 espaços

import java.util.*;

public class Venda {
int quantProd = 5;
Date data = new Date();
private Cliente cliente;
private Produto[] produto = new Produto[quantProd];
private int total=0;
private int numProdutos=0;
private int i = 0;

produto[0] = new Produto("arroz", 7.00);



public Venda(Date data) {		
	this.produto = new Produto[quantProd];
	this.cliente = new Cliente(null); 
	this.data = data;
	this.total = 0;
}

public Venda(Date data, Cliente cliente) {		
	this.produto = new Produto[quantProd];
	this.cliente = new Cliente();
	this.data = data;
	this.total = 0;			
}

public Venda(Date data, Cliente cliente, Produto[] produto) {		
	this.produto = new Produto[quantProd];
	this.cliente = new Cliente(null, null);
	this.data = data;
	this.total = 0;			
}

public double getTotal() {		
		total +=  produto[i].preco;
	return total;		
}

void adicioneProduto(Produto[] p) {
	for p in produto;
	p[i++] = this.produto.descricao;				
}


public Produto getProduto(int i) {
	return this.getProduto(i);
}

public int getNumProdutos() {
    return this.numProdutos;
}

public String imprimeVenda() {
	return data + " " + cliente + " " + this.produto[i].descricao + " " + produto[i].preco; 
}

}

Você precisa selecionar o seu código antes de clicar no botão </>. :expressionless:

A classe Venda você já postou, faltou o fonte da classe Produto e Cliente.
Agora só falta a classe Cliente.

Se você recebe o cliente por parâmetro, porque está criando um novo?

Se você recebe o cliente e os produtos por parâmetro, porque está criando um novo cliente e um novo array de produtos?

O que está tentando fazer nesse método?
Você recebe um array de produtos chamado p, aí numa determinada posição desse array você quer inserir uma descrição?
Não faz sentido.

Oi Ricardo!Boa tarde!
A ideia desse método é inserir os produtos que estão no vetor produtos em um vetor que seria o de compra. Mas não sei se vai funcionar essa forma que estou fazendo.

void adicioneProduto(Produto[] p) { for p in produto; // sintaxe errada do for p[i++] = this.produto.descricao; // p é o parâmetro, pra que mudar ele? de onde vem essa variável i ?}

A variável i é para modificar a posição do vetor compras, esse vetor deve ser dinâmico ir aumentando de tamanho cada vez que ocorrer uma compra…

vou enviar mais dois métodos o Cliente e o de caixa onde ele é responsável pelas compras e soma dos produtos. Ele vai verificar o estoque e se o vetor de produtos está completo e assim copiar para um vetor maior.
public class Cliente {
private String nome;
private String endereco;

public Cliente() {
	this.nome = " ";
	this.endereco = " ";
}

public Cliente(String nome) {
	this.nome = nome;
	this.endereco = " ";
}

public Cliente(String nome, String endereco) {
	this.nome = nome;
	this.endereco = endereco;
}


public String getEndereco() {
	
	return this.endereco;
	
}

public void setEndereco(String endereco) {
	
	this.endereco = endereco;
}

public String imprimeCliente() {
	
	return "Cliente: " + this.nome + "\n Endereco: " + this.endereco;
}

}

Por hora o método caixa está assim…
import java.util.*;

public class Caixa {
int quantProdutos = 5;
Date data;
Venda cliente;
Venda[] produto;
Scanner input = new Scanner(System.in);
int codigo;

public boolean atendimento(String resposta) {	
					
		if (resposta == "S" || resposta == "s") {
			return true;
		}
		
		else
		{
			if (resposta == "N" || resposta == "n") {
				return false;
			} 
		}
	}

public void Compra(Venda v) {		
	int iten;
	int i;
	String resposta;
	boolean atender = true;
	
	while (atender == true) {
		
		System.out.println("Continuar atendendo (S/Sim) (N/Não)?");
		resposta = input.nextLine();
			
		
		System.out.print("Produto: ");
		codigo = input.nextInt(); 
		
		atender = atendimento(resposta);
												
		Venda compra = new Venda(data, cliente, produto);
	}
}

}

Classe produto

public class Produto {
private String descricao;
private double preco;
int total=0;

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

public double getTotal() {		
	return total;		
}

public String imprimeProduto(String descricao, double preco) {
	return "Produto: "  + this.descricao + " Total:" + this.total;
}

}

Muito obrigado pela a ajuda, aprender a programar sem auxílio é bem difícil.
Sempre programei em liguagens sem ser dirigidas a objeto, tenho lido bastante mas colocar na prática não é trivial…

A lógica eu entendi, mas onde você declarou a variável i? Em lugar nenhum.

Outra coisa, Java não possui vetores dinâmicos, um vetor é alocado com tamanho fixo, se você precisar de mais elementos, precisará criar um novo vetor de maior tamanho e copiar o conteúdo do antigo para o novo.
Minha sugestão é utilizar uma lista encadeada (LinkedList) pois ela é uma estrutura que trabalha com alocação dinâmica de memória.

Cliente e Caixa não são métodos, são classes.
Está claro pra você a diferença entre objeto, classe e método?

Está sim…

tem como eu criar um vetor assim:

produto.descricao = {“arroz”, “feijão”, “macarrão”, “cuscuz”, “farinha”, " tomate", “cebola”, “batatinha”, “chuchu”, “batata”};

mantendo uma relação entre o objeto produto e a característica dele descrição?
Se eu criar um String descrição e colocar só eles ele entende…

Oi!

Boa noite!
Refatorei o programa havia características dos objetos que não estavam sendo vistas nas outras classes o programa ficou assim…
Caixa.java (1,3,KB) Cliente.java (814,Bytes) Loja.java (231,Bytes) Produto.java (972,Bytes) Venda.java (1,8,KB)

Mas ainda tenho dúvida como criar o vetor e como acessá-lo na Classe Caixa…

SIm, você tem que criar um array de Produto e não um array de String.
A descricao é um atributo da classe Produto, logo cada objeto do tipo Produto vai ter um atributo descricao.