Problema com exclusão de um item específico de um vetor [Resolvido]

16 respostas
P

Carrísmos..

Estou no 1º ano de EC e como TPF (trabalho prático final) minha professora quer que a gente faça uma simulação de uma loja online.

Até então modelei todas as classes possíveis com o meu conhecimento atual em java, porém chegou em uma parte que não
sei como seguir adiante.

Tenho que fazer uma classe Loja onde terá que ser permitido cadastrar clientes e produtos bem como excluí-los.
Bom até o momento já criei as classes produtos e clientes com todas as especificações que ela pediu, e fiz a classe loja
pensando da seguinte maneira :

public class Loja {
	
	private int quant_atual;
	private int total;
	private Cliente cliente[];
	private Produto produto[];
	
	
	public Loja(int t){
		quant_atual = t;
		total = 0;
		cliente = new Cliente[t];
		produto = new Produto[t];
	}
	
	
	public void cadastraCliente(Cliente cli){
		if (total == quant_atual)return;
			cliente[total] = cli;
			total++;
			}

	
	public void cadastraProduto(Produto pro){
		if(total == quant_atual)return;
		produto[total] = pro;
		total++;
	}

Como vocês podem ver criei um meio de cadastrar clientes e produtos.
Porém agora preciso criar um meio de excluir um cliente ou produto específico que está dentro de um desses
dois vetores que eu criei, o porém é como fazer isso.

Por isso queria que me ajudassem nessa parte. Vocês podem me dizer se isso que eu fiz está certo ou tem que ser
feito de uma outra maneira? E como eu farei para excluir um produto ou cliente especifico?
Fiquei pensando no caso de excluir por exemplo, um cliente, depois como eu conseguiria colocar outro cliente no lugar vazio
que ficou desse cliente excluído.

Enfim, se puderem me ajudar ficarei grato.

Att. Pablo

16 Respostas

tkx

Eu usaria um arraylist da vida, alocação dinamica e já pronto, mas como vc tah iniciando, está treinando arrays, faça assim mesmo!

Tem como otimizar seu codigo, mas da pra ser assim!

Para excluir, usando arrays, vc tem q fazer uma função q reveba como parametro o item a ser excluido, e retorne booleano (pra confirmar se foi excluido).
Voce precisará percorrer o array inteiro, e se achar o item, pimba nele!
Não lhe passo o codigo, tente fazer e poste q ajudo! Vai precisar dos array.length

P

Cheguei agora a noite da faculdade e lá discuti com um colega sobre qual a melhor forma de fazer esse trabalho e
ele disse que era bom usar a Array List.

Ai queria saber como usar pra poder implementar no meu trabalho…!?

Se puderem me ajudar!

Grato

tkx

Arraylist eh easy! te da tudo pronto!

ArrayList array = new ArrayList(); array.add(Object obj); array.add(int index, Object obj) array.remove(Object obj); array.remove(int index); array.clear();

P

Um método que cadastrasse cliente então ficaria assim:

ArrayList cliente = new ArrayList();  

public void cadastraCliente(Cliente cli){
cliente.add(Cliente cli);
}

???

P

Modifiquei totalmente minha classe loja:
Vejam como ficou:

package pkgTP;
import java.util.ArrayList;

public class Loja {
	
	ArrayList<Cliente> cliente;
	ArrayList<Produto> produto;
	
	public Loja(){
		
		cliente = new ArrayList<Cliente>();
		produto = new ArrayList<Produto>();
	}
	
	static int idc = 0;
	
	public void cadastraCliente(Cliente cli){
		cliente.add(cli);
		idc++;
	}
	
	static int idp = 0;
	
	public void cadastraProduto(Produto pro){
		produto.add(pro);
		idp++;
	}
	
	public void excluirCliente(int t){
		cliente.remove(t);
		
	}
	
	public void excluirProduto(int t){
		produto.remove(t);
		
	}

}

Agora estou com dúvidas em outra coisa..
Na minha classe principal abaixo vejam:

package pkgTP;

public class Testes {

	public static void main(String[] args) {
		
		Loja NewOpitionStore = new Loja();
		
		NewOpitionStore.cadastraCliente(new Cliente("Pablo", "[telefone removido]", new DataNascimento(25,07,91), "3851-7839", new Endereco("Avenida Castelo Branco", "Republica", "João Monlevade", "Sobrado", "35930-090", "Minas Gerais", 124)));
		NewOpitionStore.cadastraProduto(new Calcado("Tênis", 10, 41, "Preto"));
		
		
	}

}

Eu instanciei dois objetos e acredito que meus métodos estando certos adicionaram corretamente esses objetos criados.
Por favor peço que verifiquem se está correto e queria saber como faço para imprimir o cadastro de um determinado
cliente da ArrayList.

Grato.

Aguardo Resposta...!

tkx

Bom… aparentemente esta correto!

Para imprimir, primeiro vc vai na classe Cliente e cria uma função

public void toString(){ //Coloca as infos do cliente, como vc quer imprimir }

Dae, cria uma classe na loja

public void imprimeCliente(String nome){ for(int i = 0; i < cliente.length; i++){ if(cliente.get(i).nome.equalsIgnoreCase(nome)){ System.out.println(cliente.get(i)); break; } } }

P

Oi tkx, obrigado pela ajuda até agora, porém eu não consegui entender muito bem essa parte do código:

public void imprimeCliente(String nome){ for(int i = 0; i < cliente.length; i++){ if(cliente.get(i).nome.equalsIgnoreCase(nome)){ System.out.println(cliente.get(i)); break; } } }

Se puder me explicar com mais detalhes.

Grato.

Pablo

pczardini

pablosnr:
Oi tkx, obrigado pela ajuda até agora, porém eu não consegui entender muito bem essa parte do código:

public void imprimeCliente(String nome){ for(int i = 0; i < cliente.length; i++){ if(cliente.get(i).nome.equalsIgnoreCase(nome)){ System.out.println(cliente.get(i)); break; } } }

Se puder me explicar com mais detalhes.

Grato.

Pablo

o Código que nosso amigo “tkx” criou acima serve para imprimir um cliente de acordo com a String nome que foi passada como parâmetro para o método…

ele compara se nome é igual à posição do vetor, se positivo, faz a impressão, caso negativo, continua a varrer o vetor em busca do Cliente desejado!!

Espero ter ajudado :slight_smile:

P

Há entendi Obrigado…
Agora estou um pouco sem tempo, mas andarei postando nesses mesmo tópico outras
dúvidas com relação a ArrayList para que vcs possam estar me ajudando.

Grato

Pablo

P

view plaincopy to clipboardprint? public void imprimeCliente(String nome){ for(int i = 0; i < cliente.length; i++){ if(cliente.get(i).nome.equalsIgnoreCase(nome)){ System.out.println(cliente.get(i)); break; } } }

Está dando algum erro na parte

for(int i = 0; i < cliente.length; i++)

O comando cliente.length não está aceitando.

Qual o erro?

P

Está dando algum erro na parte

for(int i = 0; i < cliente.length; i++)

O comando cliente.length não está aceitando.

Qual o erro?

Consegui resolver o erro que perguntei, coloquei no lugar de cliente.length, cliente.size();

Bom agora tem a parte que tenho que excluir produto ou cliente.

Como eu faço isso?
Alguem me explica os comandos?

Grato

pablo

Rafael_Guerreiro

Acredito que o erro do Length seja pela falta do () no final… Tenta usar cliente.length()

pczardini

Se não me engano, o comando para remover um objeto da arrayList é o

.remove(position);
" No seu caso então,
Cliente.remove(posição do objeto a ser removido);

Encontrei na internet um fragmento de artigo bastante interessante com alguns códigos:

Os Principais métodos da Classe Collection

Add(Object objeto) - Adiciona a coleção a um determinado objeto

addAll(Collection outraCollection) ? Adiciona todos elementos de outra coleção.

clear() - Limpa todos os elementos de uma coleção.

contains(Object objeto) ? Retorna true se o objeto já fizer parte da coleção.

containsAll(Collection outraCollection) ? Retorna true caso todos os elementos de outra coleção estiverem presentes em determinada coleção.

hashcode() - Retorna o hashcode do objeto.

iterator() - Retorna o objeto de iteração com os elementos desta coleção.

remove(Object objeto) ? Remove o objeto da coleção

removeAll(Collection outraCollection) ? Remove todos os elementos que pertençam à coleção corrente e á outra coleção determinada.

retainAll(Collection outraCollection) ? Remove todos os elementos que não façam parte da coleção corrente e da outra coleção.

Size() - Retorna a quantidade elementos existentes na coleção.

toArray() - Retorna uma matriz de objetos(Object[]) dos elementos que estão contidos na coleção.

toArray([]matriz) ? Retorna uma matriz do fornecido e, se a a matriz contiver a quantidade de elementos suficiente, passa a ser utilizada para armazenamento.

Os principais métodos da interface Map

clear() - Limpa todos os elementos do mapa.

containsKeys(Object Key) ? Verifica se a chave faz parte do mapa.

containsValue(Object value) ? Verifica se o valor faz parte do mapa.

EntrySet() - Retorna um conjunto do tipo (Set) contendo as chaves do mapa.

get(Object key) - Retorna o valor baseado em uma chave.

put(Object Key,Object value) ? Coloca a chave com base em valor.

putAll(Map outroMapa) ? Coloca todos os elementos de outroMapa no mapa corrente.

remove(Object key) ? Remove o elemento com a chave fornecida.

Size() - Retorna a quantidade de elementos existentes no mapa.

Value() - Retorna uma coleção com os elementos do mapa.

Acho que aí estão os comandos que você pode utilizar com arraylist!!

Testa ai e avisa pra galera :D

Obs:Não tinha referências do autor, se alguem souber me avise para os devidos créditos.

P

.remove(position);

Esse método realmente remove pela posição, porém preciso de um método que exclua pela descrição do produto.
Mas pensando em lógica é só eu varrer a ArrayList em busca da descrição e após isso, então mandar excluir.

Vou tentar, depois mostro os resultados.

Grato…
Pablo

pczardini

pablosnr:
.remove(position);

Esse método realmente remove pela posição, porém preciso de um método que exclua pela descrição do produto.
Mas pensando em lógica é só eu varrer a ArrayList em busca da descrição e após isso, então mandar excluir.

Vou tentar, depois mostro os resultados.

Grato…
Pablo

Isso aí!

procure pela descrição, encontre a posição e exclua usando o .remove!

pczardini

Se resolveu seu problema, coloque uma TAG de [Resolvido] no título do tópico!!

:smiley:

[]'s

Criado 25 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 16
Participantes 4