Sera que alguém pode me ajudar por favor

Boa tarde meu nome é Felipe sou iniciante em java e por isso estou com duvidas em um teste que eu fiz no java.
É um teste basico que pede para digitar o nome o peso e a altura do usuario quando eu executo aparece a seguinte mensagem.

Exception in thread “main” java.lang.NumberFormatException: For input string: “1,87”
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.parseDouble(Double.java:510)
at javaapplication1.Calculo.main(Main.java:31)

Será que alguém pode me ajudar. Obrigado Agradeço desde ja

Ao informar o valor, informe com ponto ao invés de vírgula.

1.87

ao invés de

1,87

Ou trate isso.

Dicas:
Coloque um título mais sugestivo ao seu post.
Cole seu código aqui pra gente analisar.
Mas antes leia isso: http://www.guj.com.br/posts/list/50115.java

Você está tentando dar um Double.parseDouble nesse valor ‘1,87’. Porém, o formato do Double para separar decimais é utilizando ‘.’ ao invés de ‘,’.

Tente utilizar: double pesoDouble = Double.parseDouble(pesoString.replace(",","."));

[code]String s = “1,87”;

Locale localePtBr = new Locale(“pt”, “BR”);
NumberFormat ptBrNumberFormatter = NumberFormat.getNumberInstance(localePtBr);

double numero = ptBrNumberFormatter.parse(s).doubleValue(); // pode atirar um ParseException. Trate-o.[/code]

Obrigado funcionou realmente era a questao da 1,87 que eu estava colocando mas na verdade funcionava com 1.87 vlw
Outra coisa se nao for muito abuso eu coloquei para calcular o imc peso/altura*altura mas pelo jeito nao esta certo por que nao funcionou sera que vc poderia me ajudar.

Coloque seu código pra gente ver aonde você está errando…

[quote=Felipe Simoes]Obrigado funcionou realmente era a questao da 1,87 que eu estava colocando mas na verdade funcionava com 1.87 vlw
Outra coisa se nao for muito abuso eu coloquei para calcular o imc peso/altura*altura mas pelo jeito nao esta certo por que nao funcionou sera que vc poderia me ajudar.[/quote]

Boa tarde segue abaixo o codigo que ultilizei para fazer o calculo do Imc.

OBS: Coloquei apenas uma condição no sistema pq sou iniciante. if (imc >= 15) tenho que começa devagar. rsrsrsrss

Se alguem puder me ajudar eu agradeço desde ja obrigado.

package javaapplication1;

// Pacotes de extensao java
import javax.swing.JOptionPane; // importa a classe JOptionPane

// metodo main incia a execuçao do aplicativo
class Calculo {

public static void main(String[] args)

{
String Nome, p,a,i;

double peso; // primeiro string inserido pelo usuario
double altura; // segundo string inserido pelo usuario
double imc; // peso/altura*altura

Nome = JOptionPane.showInputDialog("Digite o Nome ");

// recebe a string peso
p = JOptionPane.showInputDialog(“Digite seu Peso”);

// converte a String em double
peso = Double.parseDouble ( p );

a = JOptionPane.showInputDialog(“digite sua Altura”);

// converte a String em double

altura = Double.parseDouble(a);

imc = (peso/altura*altura);

if (imc >= 15) {

JOptionPane.showMessageDialog(null,
“Paciente” + “/i” + “Imc do Paciente é” + imc, “Paciente com peso Normal”,
JOptionPane.INFORMATION_MESSAGE);

}

else {
JOptionPane.showMessageDialog(null,
“Paciente” + “/i” + “imc do Paciente é” + imc, “Paciente abaixo do Peso”,
JOptionPane.WARNING_MESSAGE);

}

System.exit(0); // termina o aplicativo

} // fim do metodo main
} // fim da classe calculo

Você deve tratar a entrada do usuário como o Bruno Laturner postou.

Tente assim:

 public static void main(String args[]) {
        String Nome, p, a, i;


        double peso = 0; // primeiro string inserido pelo usuario
        double altura = 0; // segundo string inserido pelo usuario
        double imc; // peso/altura*altura

        Nome = JOptionPane.showInputDialog("Digite o Nome ");

// recebe a string peso
        p = JOptionPane.showInputDialog("Digite seu Peso");

// converte a String em double
        Locale localePtBr = new Locale("pt", "BR");
        NumberFormat ptBrNumberFormatter = NumberFormat.getNumberInstance(localePtBr);
        try {
            peso = ptBrNumberFormatter.parse(p).doubleValue();
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "Erro",
                    "O peso informado é inválido.",
                    JOptionPane.ERROR_MESSAGE);
        }

        // converte a String em double
        a = JOptionPane.showInputDialog("digite sua Altura");
         try {
            altura = ptBrNumberFormatter.parse(a).doubleValue();
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "Erro",
                    "O peso informado é inválido.",
                    JOptionPane.ERROR_MESSAGE);
        }
        



        

        imc = (peso / altura * altura);

        if (imc >= 15) {

            JOptionPane.showMessageDialog(null,
                    "Paciente" + "/i" + "Imc do Paciente é " + imc, "Paciente com peso Normal",
                    JOptionPane.INFORMATION_MESSAGE);

        } else {
            JOptionPane.showMessageDialog(null,
                    "Paciente" + "/i" + "imc do Paciente é " + imc, "Paciente abaixo do Peso",
                    JOptionPane.WARNING_MESSAGE);

        }

        System.exit(0); // termina o aplicativo

    } // fim do metodo main

Espero ter ajudado.

Abraço!

Ok Obrigado irei tentar dessa forma obrigado pelo help vlw. Assim que realizar o teste aviso se funcionou mais uma vez vlw abraço.

Obrigado pelo help realmente funcionou vlw.
Abraço.