Olá, alguém poderia me dizer como utilizar o método Equals?
Se eu tenho uma classe Produto com nome e quantidade. Se eu tenho um produto que tem o mesmo nome, como eu armazeno somente a quantidade total a esse mesmo produto usando o Equals?
No caso, a classe Produto teria um método equals que diz qual é a regra usada para saber se os produtos são iguais. E aí você coloca a regra que precisar (por exemplo, se os nomes são iguais, ou se o nome e código são iguais, ou qualquer outra, dependendo da necessidade).
Ou seja, nada a ver com o que você quer fazer (ou pelo menos, com o que eu acho que entendi que você quer…)
W
Willian1
é basicamente, eu inseri um produto com nome: tesoura com quantidade: 3.
como eu faço se eu quiser inserir novamente o produto tesoura sem acrescentar outro produto somente atribuindo o valor a esse produto.
não usa o equals para comparar se já tem um produto com o mesmo nome?
Exemplo –Digite nome e quantidade----
nome: tesoura quantidade: 3
nome: tesoura quantidade: 5
O que eu queria que acontecesse:
Imprimir: nome: tesoura quantidade: 8
E
essevaiproale
Olá.
Crie um metodo de soma dentro do seu objeto.
Quando quiser adicionar uma certa quantidade basta encontrar o objeto igual pelo nome e adicionar a quantidade que precisa chamado o método de somar passando a quantidade como parametro:
Para encontrar o objeto de nome igual você pode usar:
if(p1.getNome().equalsIgnoreCase("Nome do seu objeto")){
p1.adiciona("<quantidade a ser somada>");}
Abaixo um exemplo:
publicclassProduto{privateStringnome;privateintquantidade;publicProduto(){super();}publicProduto(Stringnome,intquantidade){super();this.nome=nome;this.quantidade=quantidade;}publicintgetQuantidade(){returnquantidade;}publicvoidsetQuantidade(intquantidade){this.quantidade=quantidade;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicvoidadiciona(intquantidade){this.quantidade+=quantidade;}}importjava.util.ArrayList;publicclassMain{publicstaticvoidmain(String[]args){// instancio o produto p1 com nome laranja e quantidade 1Produtop1=newProduto();p1.setQuantidade(1);p1.setNome("Tesoura");System.out.println("Nome : "+p1.getNome());System.out.println("Quantidade : "+p1.getQuantidade());p1.adiciona(3);System.out.println("Nome : "+p1.getNome());System.out.println("Quantidade : "+p1.getQuantidade());}}
Saida desse código:
Nome : Tesoura
Quantidade : 1
Nome : Tesoura
Quantidade : 4
H
Solucao aceita
hugokotsubo
Nesse caso eu usaria um Map que mapeia os nomes aos produtos. Algo assim:
publicclassProduto{privateStringnome;privateintquantidade;publicProduto(Stringnome,intquantidade){this.nome=nome;this.quantidade=quantidade;}publicStringgetNome(){returnnome;}publicvoidadiciona(intqtd){this.quantidade+=qtd;}publicintgetQuantidade(){returnquantidade;}}// e no mainpublicstaticvoidmain(String[]args)throwsException{Scannersc=newScanner(System.in);Map<String,Produto>produtos=newHashMap<>();while(true){System.out.println("Digite o nome do produto: ");Stringnome=sc.nextLine();System.out.println("Digite a quantidade: ");intqtd=Integer.parseInt(sc.nextLine());if(!produtos.containsKey(nome)){// se produto ainda não está no map, criaprodutos.put(nome,newProduto(nome,qtd));}else{// se produto já existe, só atualiza a quantidadeprodutos.get(nome).adiciona(qtd);}// imprime os produtosSystem.out.println("Produtos:");for(Produtoproduto:produtos.values()){System.out.printf("- Nome: %s, quantidade: %d\n",produto.getNome(),produto.getQuantidade());}}}