Public String totalEmreais (){

[code]

/*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 ;
  }

}
[/code]

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 .

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 SÓ 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$.