Como usar mascara monetária em Double

Como uso uma mascara para um valor Double? Esta dando erro : Cannot format given Object as a Number

String op = request.getParameter("op");
            String idservico = request.getParameter("idservico");
            String nome = request.getParameter("nome");
            String preco = request.getParameter("preco");
            try {
                Servico s = new Servico();
                switch (op) {
                    case "inserir":{
                        if(nome.equals("") || nome.isEmpty()){
                            out.print("O campo NOME deve ser preenchido!");
                        }else if(preco.equals("") || preco.isEmpty()){
                            out.print("O campo PREÇO deve ser preenchido!"); 
                        }else{
                            s.setNome(nome);
                            DecimalFormat df = new DecimalFormat("#,###.00");
                            df.format( new DecimalFormat()   );                    
                            s.setPreco(Double.parseDouble(preco));

Quem puder ajuda, agradeço!!!

Amiguinho o seu erro possivelmente está acontecendo porque você tem uma String preco no formato brasileiro com separador de milhar sendo ponto e separador decimal sendo virgula, exemplo:

1.234,56

mas o que Double.parseDouble(preco) aceita é uma string sem separador de milhar e com separador de decimal sendo ponto, assim:

1234.56

uma duvida que eu tenho é o que vc quer com isso? não está acontecendo nada aqui… E possivelmente emitirá um erro…

DecimalFormat df = new DecimalFormat("#,###.00");
df.format( new DecimalFormat());
1 curtida