Public String totalEmreais (){

1 resposta
van_bommel
/*4) Escrever a classe Estoque, cujo atributo único é estoque, que é um ArrayList de
objetos da classe Mercadoria (exercício 3). A seguir, na mesma classe, escrever os
seguintes métodos:
a) um método construtor, sem parâmetros, que inicializa o atributo estoque;



*/

     import java.util.ArrayList ;
    import java.util.Iterator ;
    import javax.swing.*;
    

public class Estoque {
   
      private ArrayList estoque ;
   //  construtor 
   // inicializa o arraylist estoque 
       public Estoque () {
         estoque = new  ArrayList() ;
      }
   /*
    * b) um método para incluir uma Mercadoria no estoque, que deve receber, usando
    * parâmetros, os dados dessa Mercadoria (nome, preço unitário e quantidade);
    */
       public void colocarProdutoNoEstoque(String nomeMercadoria, double precoMercadoria, double quantidadeMercadoria)  
      {  
           // criando um obj "m" para guardar  os parametros passados pelo usuario 
         Mercadoria m = new Mercadoria (precoMercadoria, quantidadeMercadoria, nomeMercadoria);  
         // add o obj "m" no estoque  
         estoque.add(m);  
         //JOptionPane.showMessageDialog(null, "Produto colocado no carrinho.");  
      }  
     // metodo que add um Obj da classe mercadoria ;;
     
       public void colocarProdutoNoEstoque(Mercadoria novaM )
      {
        
         estoque.add(novaM);
        //JOptionPane.showMessageDialog(null, "Produto colocado no carrinho.");
      }
      
      /*
       * 
       * c) um método, o qual recebe por parâmetro o nome da Mercadoria, para remover
       * uma mercadoria do estoque (Obs.: lembrar que o ArrayList estoque pode estar
       * vazio ou que a Mercadoria fornecida no parâmetro pode não existir no ArrayList
       * estoque ? nestes casos, o método deve apenas imprimir uma mensagem
       * apropriada de erro);
       */
      //
      // este metodo pergunta ao usuario qual o nome  , e busca no arraylist se o nome se existi retorna o indice  senão retorna -1 ..
      
       public int  procurarMercadoria ( String nome ) {
             //contador 
         int i = 0;
            // enquanto ( indice < que array list estoque 
         while ( i < estoque.size() ) {
                 // casting obrigado 
                 // Nomedaclasse obj = ( Nomedaclasse) arrayList.get(indice) 
            Mercadoria m = (Mercadoria ) estoque.get(i) ;
                 // esse if compara o o nome inserido pelo usuario com o nome que retorna o metodo do nome da cLasse Mercadoria 
                 // se (nomeInseriDoPeloUsuario.equals(obj.metodoQueRetornaOnome())
            if ( nome.equals  (m.getNome ()) ){
                     // se encontado retorn o indice 
               return i ;
            }
                    
            i ++ ;
         }
                // senão retoro - 1
         return -1;
      }
         
       public void romover ( String nome ) {
         int resp = procurarMercadoria (nome) ;
         if ( resp == -1 ) {
            JOptionPane.showMessageDialog (  null, "o produto não existi no estoque ");
         }
         else{
            estoque.remove(resp);
                    
            JOptionPane.showMessageDialog (  null, " produto removido com sucesso ");
         }
      }
            /*
             * 
             * d) um método, o qual recebe por parâmetro o nome da Mercadoria, que imprime
             * os dados dessa Mercadoria, caso essa Mercadoria exista no estoque;
             */
       public void  imprimirDados (String nome ) {
            
         int resp = procurarMercadoria ( nome ) ;
         Mercadoria m = (Mercadoria ) estoque.get(resp);
         if ( resp == -1) {
            JOptionPane.showMessageDialog (  null, "o produto não existi no estoque ");
         }
            
         else {
            JOptionPane.showMessageDialog (  null,   " Nome da Mercadoria : "  + m.getNome() + " \n " + "Quantidade em Estoque: " +m.getQuantidade () + "\n " + "Preço Unitário (R$): " + m.getPrecoUnitario () ); 
         }
      
      }
            /*
             * e) um método, sem parâmetros, que imprima uma lista do todas as Mercadorias
             * do estoque, incluindo nome, preço unitário e quantidade de cada uma;
             */
       public void listaDeMercadoria (){
         int i = 0 ;
         String saida ="";
         while ( i < estoque.size() ) {
            Mercadoria m =  (Mercadoria )  estoque.get(i) ;
            saida = saida +   " Nome da Mercadoria : "  + m.getNome() + " \n " + "Quantidade em Estoque: " +m.getQuantidade () + "\n " + "Preço Unitário (R$): " + m.getPrecoUnitario () ; 
            i ++ ; 
         }
                            
         JOptionPane.showMessageDialog (  null, saida);
      }
                            
                           // f) um método, sem parâmetros, que retorne o valor total do estoque, em reais.
                           
       public String  totalEmreais (){
         int i = 0 ;
         String saida = " ";
         double soma =0;
         double total =0;
         while ( i < estoque.size()){
            Mercadoria m = (Mercadoria) estoque.get(i);
            soma =   m.getQuantidade() * m.getPrecoUnitario() ;
            total = total + soma ;
                                
            i++;
                                
         }
         saida = saida +" O valor total do estoque  é  R$ "  + total;
         return saida ;
      }
   }

Eaee pessoas essa é a melhor forma de fazer ....o ultima metodo , posso retorna assim mesmo , não entendi como o professor quer. ?queria retorna a quantidade em reais tipo R$ 70,00 .

1 Resposta

M

edit: afê fiquei mo tempo escrevendo ai entendi que você so queria o format do valor… Leia a ultima parte e seja feliz =P

Acho que aqui seu professor queria que você utilizasse generics. O uso de generics faz desnecessario o Cast que eu vi que você deu la em baixo! Porque so pode sair Mercadorias dentro de uma coleção de Mercadorias.

private ArrayList<Mercadoria> estoque; 

public Estoque() {
estoque = new ArrayList<Mercadoria>(); // inicializa a variavel 'estoque' criando um objeto ArrayList e dizendo que ele  recebe Mercadoria
}

Primeiro ele fala “lembrar que o arraylist pode estar vazio”
Então acho melhor você primeiro fazer um teste se ela está vazio.
A coleção ArrayList tem um método chamado “contains(Object o)” que como você pode ver, recebe um objeto… E ele vê se contém atravez do equals… E como é para saber se existe mercadoria pelo nome, seu equals (que você já sobrescreveu certo? =P) deve comparar as mercadorias pelo nome.

O método para imprimir dados deve ser aprimorado a partir das mudanças feitas acima…

Use o método format desta classe:

NumberFormat nf = NumberFormat.getCurrencyInstance();

Pra formatar o valor em moeda do local de onde a JVM está, ou veja as formas sobrecarregadas para fazer sempre imprimir em R$.

Criado 29 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 1
Participantes 2