AJBM Posted April 28, 2012 at 02:25 PM Report #451916 Posted April 28, 2012 at 02:25 PM Boas! eu quero fazer um metodo adicionar que adicione bebidas mas se essa bebida ja existir nao adicionar mas sim aumentar a sua quantidade eu ja fiz isto public boolean adicionarBebida(Bebida b) { boolean adicionar = false; contarBebidas(); if (b != null&&bebida.length==contarBebidas()) { Bebida[] tmp = new Bebida[bebida.length + 1]; for (int i = 0; i < bebida.length; i++) { tmp[i] = bebida[i]; } for (int i = 0; i < bebida.length; i++) { if (bebida[i]!=null&&b.getNome().equals(bebida[i].getNome())) { b.setStock(b.getStock() + bebida[i].getStock()); } else { tmp[bebida.length] = b; } } bebida = tmp; }else if(b!=null && bebida.length>contarBebidas()){ Bebida[] tmp = new Bebida[bebida.length]; for (int i = 0; i < bebida.length; i++) { tmp[i] = bebida[i]; } for (int i = 0; i < bebida.length; i++) { if (bebida[i]!=null&&b.getNome().equals(bebida[i].getNome())) { b.setStock(b.getStock() + bebida[i].getStock()); } else { tmp[contarBebidas()] = b; } } bebida = tmp; } return adicionar; } Bebida[] bebida = new Bebida[4]; Stock stock; stock = new Stock(bebida); stock.adicionarBebida(new BebidaAlcoolica(2, "Vodka", 1, 2)); stock.adicionarBebida(new BebidaGasificada(2, "7up", 2, 2)); stock.adicionarBebida(new BebidaAlcoolica(2, "vodka", 2, 2)); stock.adicionarBebida(new BebidaAlcoolica(2, "vodka", 2, 2)); stock.listarStock(); a quantidade esta a seguir ao nome o resultado de vodkca e 6 e devia ser 5 alguem me pode ajudar
RubenFelix Posted April 28, 2012 at 04:46 PM Report #451925 Posted April 28, 2012 at 04:46 PM Que tal a utilização de um ArrayList ? Seria tremendamente mais fácil de implementar a tua solução. Ficarias com um ArrayList de bebidas que seria o teu stock e na classe bebida, implementavas então uma variável que contivesse o número dessa bebida em stock. Ora na adição, antes de adicionares a bebia ao ArrayList, verificarias primeiro se a bebida já existia: Se sim, seleccionavas o objecto que querias (neste caso a bebida igual à que queres adicionar) e facilmente incrementas a variável de bebidas em stock; Se não, simplesmente adicionas a bebida ao ArrayList. Para a eliminação, procuras pela bebida no ArrayList e, caso exista, decrementas a variável de bebida em stock, exceptuando quando estiver a zero. Espero ter ajudado. Cumprimentos.
AJBM Posted April 28, 2012 at 04:58 PM Author Report #451926 Posted April 28, 2012 at 04:58 PM o professor quer sem a utilização de arrayList
RubenFelix Posted April 28, 2012 at 05:07 PM Report #451927 Posted April 28, 2012 at 05:07 PM Humm, (não) compreendo. Utiliza então o debug para visualizares o que fizeste de mal ao longo do algoritmo. É dificil ajudar assim com o código tão cru e sem qualquer comentário. De qualquer forma, pela vista de olhos que passei o resultado da "vodka" deveria ser quatro e não cinco se não estou enganado. Estás a ir pelo .equals() do getNome() das tuas bebidas, e a primeira "Vodka" definida tem V grande na primeira letra, não v. Logo o equals dará diferente. Bom trabalho.
AJBM Posted April 28, 2012 at 05:10 PM Author Report #451929 Posted April 28, 2012 at 05:10 PM vodka esta com letra pequena ao copiar emendei algumas coisas e ficou letra grande.
AJBM Posted April 29, 2012 at 10:38 AM Author Report #452017 Posted April 29, 2012 at 10:38 AM ja consegui 😄
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now