Arrays em contrutores

24 respostas
M

pessoal tenho que fazer uma vrnda de ate 10 items

minha classe que Tem um contrutor de items
public class ItemDeVenda{
	private int quantidade=0;
	Produto prod = null;
	
	public ItemDeVenda(){}
	
	public ItemDeVenda(Produto prod,int quantidade){
		this.prod=prod;
		this.quantidade=quantidade;
	}  
	public double calcularPreco(){
		double tpagar=0;
		tpagar = prod.getValorUnit()*getQuantidade();
		return tpagar;
	}
	//metodo get e set de quantidade
	public int getQuantidade(){
		return quantidade;
	}
	public void setQuantidade(int quantidade){
		this.quantidade=quantidade;
	}

	//metodo toString
	public String toString(){
		String frase="";
		frase = "\nProduto: "+prod.getDescricao()+"\nQuantidade: "+getQuantidade()+"\nTotal a pagar: "+calcularPreco();	
		return frase;	
	}
}

minha classe venda que armazena a data de venda, o nome do cliente, e os items(até 10 itemns ) que ele comprou

public class Venda{
	private String data="";
	private Cliente cli=null;
    ItemDeVenda item[] = new ItemDeVenda[10];
	
	public Venda(String data,Cliente cli,ItemDeVenda item[]){
		this.data=data;
		this.cli=cli;
		this.item=item;
	}
	public String getData(){
		return data;
	}
	public void setData(String data){
		this.data=data;
	}	
	public String toString(){
		String frase1="";
		frase1 = "\n\nData: "+getData()+"\nCliente: "+cli.getNome();
		return frase1;		
	}
	
}

minha duvida eh o seguinte, como eu faço para jogar no contrutor venda os 10 itemsn...porque meu codigo da o seguinte erro!
cannot find symbol method item(Produto,int)

24 Respostas

tonydesign
michelato:
pessoal tenho que fazer uma vrnda de ate 10 items minha classe que Tem um contrutor de items
public class ItemDeVenda{
	private int quantidade=0;
	Produto prod = null;
	
	public ItemDeVenda(){}
	
	public ItemDeVenda(Produto prod,int quantidade){
		this.prod=prod;
		this.quantidade=quantidade;
	}  
	public double calcularPreco(){
		double tpagar=0;
		tpagar = prod.getValorUnit()*getQuantidade();
		return tpagar;
	}
	//metodo get e set de quantidade
	public int getQuantidade(){
		return quantidade;
	}
	public void setQuantidade(int quantidade){
		this.quantidade=quantidade;
	}

	//metodo toString
       @Override // coloquei pois tava faltando !!
	public String toString(){
		String frase="";
		frase = "\nProduto: "+prod.getDescricao()+"\nQuantidade: "+getQuantidade()+"\nTotal a pagar: "+calcularPreco();	
		return frase;	
	}
}

minha duvida eh o seguinte, como eu faço para jogar no contrutor venda os 10 itemsn...porque meu codigo da o seguinte erro!
cannot find symbol method item(Produto,int)

ta dando erro aqui

vc criou a classe Produto ?

M
sim aki esta ela [codepublic class Produto{

private String codigo="";

private String descricao="";

private double peso=0;

private double valorUnit=0;
//construtores  Produto	
public Produto(){}
public Produto(String codigo,String descricao,double peso,double valorUnit){
	this.codigo=codigo;
	this.descricao=descricao;
	this.peso=peso;
	this.valorUnit=valorUnit;
}	
//motodos gets e sets
public String getCodigo(){
	return codigo;
}
public void setCodigo(String codigo){
	this.codigo=codigo;
}
public String getDescricao(){
	return descricao;
}
public void setDescricao(String descricao){
	this.descricao=descricao;
}
public double getPeso(){
	return peso;
}
public void setPeso(double peso){
	this.peso=peso;
}
public double getValorUnit(){
	return valorUnit;
}
public void setValorUnit(double valorUnit){
	this.valorUnit=valorUnit;
}	
//metodo imprimir produto
public void imprimirProduto(){
	System.out.println("Cdigo..........: " + getCodigo());
	System.out.println("Descrio.......: " + getDescricao());
	System.out.println("Peso............: " + getPeso());
	System.out.println("Valor Unitrio..: " +getValorUnit());	
}	

}
M
sim aki esta ela
public class Produto{
	private String codigo="";
	private String descricao="";
	private double peso=0;
	private double valorUnit=0;
	
	//construtores  Produto	
	public Produto(){}
	public Produto(String codigo,String descricao,double peso,double valorUnit){
		this.codigo=codigo;
		this.descricao=descricao;
		this.peso=peso;
		this.valorUnit=valorUnit;
	}	
	//motodos gets e sets
	public String getCodigo(){
		return codigo;
	}
	public void setCodigo(String codigo){
		this.codigo=codigo;
	}
	public String getDescricao(){
		return descricao;
	}
	public void setDescricao(String descricao){
		this.descricao=descricao;
	}
	public double getPeso(){
		return peso;
	}
	public void setPeso(double peso){
		this.peso=peso;
	}
	public double getValorUnit(){
		return valorUnit;
	}
	public void setValorUnit(double valorUnit){
		this.valorUnit=valorUnit;
	}	
	//metodo imprimir produto
	public void imprimirProduto(){
		System.out.println("Cdigo..........: " + getCodigo());
		System.out.println("Descrio.......: " + getDescricao());
		System.out.println("Peso............: " + getPeso());
		System.out.println("Valor Unitrio..: " +getValorUnit());	
	}	
}
Metal_Java_Full

Esse construtor vazio às vezes da erro!
Eu tive esse mesmo problema recenmtemente. Pq nao tenta retirar o construtor (Ja q vc vai querer instanciar objetos) e troca por um metodo qualquer?

vlew

M

o raciocinio eh esse olha

tipo…recebeu um item…blza…vai la e seta
recebeu outro…ok…vai la e seta
o cliente nao quer amis compra
sai do do/while
e cria o construtor
mandando o vetor de itens
seto…armazena no vetor de itens
mas nao seu como faço issooooooo

R

mostra como vc está instanciando um ItemVenda

M

ItemDeVenda armazena_items[] = new ItemDeVenda[10]; ItemDeVenda item = new ItemDeVenda(); tentei de duas formassss

observe

K

e se vc entrar em posição por posição e ir entrando com os itens…
item[0] = banana e assim por diante

nel

Olá.

Por favor, poste o stacktrace (erro) completo e também diga qual a sua necessidade, ou seja, a descrição do seu problema.
E só para deixar claro, esta linha:

ItemDeVenda itemDeVenda[] = new ItemDeVenda[10];

Você sabe o que está fazendo? Você está instanciando 10 Objetos do tipo ItemDeVenda, é exatamente isto que você quer?
Abraços.

M

eh quero colocar 10 items dentro de um contrutor de venda

K

cara vc ja tentou acessar posicao por posicao?

nel

E o formato deve ser exatamente este?
Não seria mais interessante ter uma lista de Itens?

Declara uma classe com os atributos que se faz necessário para um item, seus respectivos getters e setters e na sua venda você passa esta lista.
Desta forma não ficaria um código mais “limpo” e de fácil utilização?

Abraços.

P.s: poste o stacktrace da exception ok? :slight_smile:

M

entao mas eu n sei fazer isso,…tiipo com assim, get e set, para um vetor/??

K

entao caso da minha forma nao de certo de entrar em posicao por posicao item[0] = a;

vc pode criar uma lista

List item = new ArrayList<>();

item.add(“x”)

e ai no final vc vai ter algum metodo que recebe essa lista.

metodo(item)

M
n meu programa n posso usar array list, mas veja o q eu fiz deu certo, mas nao imprime depois a vanda....imprimie o nomeDoCliente, data mas n imprimeo produto e quantidade
public class Venda{
	private String data="";
	private Cliente cli=null;
    ItemDeVenda item[] = new ItemDeVenda[10];
	
	public Venda(String data,Cliente cli,ItemDeVenda item[]){
		this.data=data;
		this.cli=cli;
		this.item=item;
	}

	public String getData(){
		return data;
	}
	public void setData(String data){
		this.data=data;
	}	
	public String toString(){
		String frase1="";
		frase1 = "\n\nData: "+getData()+"\nCliente: "+cli.getNome()+"\nItem: "+item[].toString();
		return frase1;		
	}
	
}
public class ItemDeVenda{
	private int quantidade=0;
	Produto prod = null;
	
	public ItemDeVenda(){}
	
	public ItemDeVenda(Produto prod,int quantidade){
		this.prod=prod;
		this.quantidade=quantidade;
	}  
	public double calcularPreco(){
		double tpagar=0;
		tpagar = prod.getValorUnit()*getQuantidade();
		return tpagar;
	}
	//metodo get e set de quantidade
	public int getQuantidade(){
		return quantidade;
	}
	public void setQuantidade(int quantidade){
		this.quantidade=quantidade;
	}

	//metodo toString
	public String toString(){
		String frase="";
		frase = "\nProduto: "+prod.getDescricao()+"\nQuantidade: "+getQuantidade()+"\nTotal a pagar: "+calcularPreco();	
		return frase;	
	}
}
Lista_items[a] = new ItemDeVenda(armazena_produtos[posProd],quantidade);
	 			           armazena_vendas[a] = new Venda(data,armazena_clientes[posCli],Lista_items);
	 			           a++;
	 			           tvendas++;
System.out.println(armazena_vendas[j].toString()); // ki imprime certo so a data e o cliente o resoto aparece uns negocio tipo assim 1321@454it
nel

É simples, você está imprimindo o seu objeto no formato de String. Você deve pegar cada posição do seu array armazena_vendas[j], ele retorna um tipo de objeto e partir deste objeto você faz o .get() e pega os valores que deseja.

M

pode me dar um exemplo?

thundercas
ArrayList<Carro> lista = new <Carro>ArrayList();
lista.add(new Carro("Fusca", "Vermelha", "1.6"));
lista.add(new Carro("Corsa", "Azul Banada", "1.0"));
lista.add(new Carro("Voyage", "Rosa", "1.8"));

for (int counter = 0; counter < lista.length(); counter++) {

    Carro carro = (Carro) lista.get(counter);
    System.out.println(carro.getModelo());

}

Não testei não, portanto, ignore erro de sintaxe ^^

M

mas no meu programa n posso usar array
List

thundercas

Use o que quiser como vetor cara, foi só um exemplo…

thundercas
Carro [] lista = new Carro[3];

lista[0] = new Carro(Fusca, Vermelha, 1.6);

lista[1] = new Carro(Corsa, Azul Banada, 1.0);

lista[2] = new Carro(Voyage, Rosa, 1.8);

for (int counter = 0; counter < lista.length(); counter++) {

Carro carro = (Carro) lista[counter];
System.out.println(carro.getModelo());

}

nel

Fácil de entender agora certo amigo? :slight_smile:
Caso seu tópico seja resolvido não esqueça de editar e adicionar [Resolvido] ao lado dele ok?

Se não foi resolvido e ainda possui dúvidas fique á vontade para perguntar :slight_smile:
Abraços.

M

o q eu qeruia fazer agora eh imprimir o armazena_vendas, mas que imprimisse o nome do cliente, produto, data e quantidade, como faço isso

cvc tem um exemplo?

thundercas

michelato:
o q eu qeruia fazer agora eh imprimir o armazena_vendas, mas que imprimisse o nome do cliente, produto, data e quantidade, como faço isso

cvc tem um exemplo?

Pow bicho, é só vc pegar o código que eu coloquei e adaptar ao seu… Você ignorou o código postado para te ajudar e voltou à pergunta inicial… Dá a impressão que você nem leu, ou se leu, está com preguiça de pensar… Agora, se vc leu, e está com dúvidas, peço desculpas e fico a disposição par ajudar…

abs…

Criado 11 de dezembro de 2009
Ultima resposta 11 de dez. de 2009
Respostas 24
Participantes 7