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.
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;
}
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 </>.
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;
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?
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.