Erro converter String para Double

No meu código estou lendo uma frase e guardando na minha variável string os valores 55,88,
preciso converter os valores que estão na string para double, só que esta dando erro conforme escrevi abaixo,

Alguém consegue me ajudar ?

String frase = “Bla bla bla bla bla Valor 55,88 bla bla bla bla bla”;
Pattern pattern = Pattern.compile(“Valor (\d+\W\d+)”);
Matcher matcher = pattern.matcher(frase);
if (matcher.find()) {
String valor = matcher.group(1);
double valorBruto = Double.valueOf(valor);

		        System.out.printf("Achei o valor bruto: " + valorBruto);
		    } else {
		 	    System.out.println("Nao achei o valor bruto"); 
		    }

Exception in thread “main” java.lang.NumberFormatException: For input string: “55,88”
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at java.lang.Double.valueOf(Unknown Source)
at program.Programa.main(Programa.java:33)

da um replace de virgula para ponto no valor “55,88”

eu fiz isso e deu certo, mais fiquei em duvida o porque ele não aceita o valor com virgula e só com ponto, vc tem alguma ideia o pq?

bom daí eu já num sei…isso pega a parte teórica…mais tem um pessoal fera aqui no GUJ logo alguém te responde essa facinho…blza

Ok vou aguardar alguém descobrir o motivo, valew…

Porque os tipos double e float usam o ponto como separador decimal e não a vírgula.

entendi, então qual seria a solução para fazer essa conversão?

Ué, troca a vírgula por ponto, como o @blayd2015 já sugeriu.

Dúvida, por que você está usando o método valueOf?
O valueOf retorna um objeto Double, mas sua variável é do tipo primitivo double.

Faça assim:

String valor = matcher.group(1);
valor = valor.replace(',', '.');
double valorBruto = Double.parseDouble(valor);