Problemas com tipos numéricos

Pessoal estou tendo dificuldades em solucionar um probleminha de entrada de valores. Acontece o seguinte tenho um programa onde o usuário informa um valor numérico através de um JOptionPane, eu declarei a variável altura que recebe a string de dentro do JOptionPane como double e quando o usuário informa um valor como 1.8 beleza o programa funciona, mas quando ele digita 1,8 o programa dá o seguinte erro:

O programinha é bem simples para informar o peso ideal mediante o sexo e a altura da pessoa.

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Calcula_Peso{
    public static void main(String[] args){
        String digitar, sexo = null;
        double peso;
        double alt;
        
        DecimalFormat df= new DecimalFormat("0.00");
        
        digitar = JOptionPane.showInputDialog("Digite a Altura");
        alt = Double.parseDouble(digitar);
        
        if (alt >= 0){
            sexo = JOptionPane.showInputDialog("Digite o Sexo");
            if ((sexo=="F") || (sexo=="f")){
	            peso=((62.1*alt)-44.7);
	            System.out.println("O Peso Ideal:" + " " + df.format(peso) + " " + "Kg");
	        }
	        if ((sexo.charAt(0)=='M') || (sexo.charAt(0)=='m')){
	            peso=(72.7*alt)-58;
	            System.out.println("O Peso Ideal:" + " " + df.format(peso) + " " + "Kg");
	        }  
        }else{
		        while (alt < 0){
		            digitar = JOptionPane.showInputDialog("Digite a Altura");
		            alt = Double.parseDouble(digitar);
		        }
	    
		        sexo = JOptionPane.showInputDialog("Digite o Sexo");
		        		            
		        if ((sexo.charAt(0)=='F') || (sexo.charAt(0)=='f')){
			            peso=((62.1*alt)-44.7);
			            System.out.println("O Peso Ideal:" + " " + df.format(peso) + " " + "Kg");
		        }
		        if ((sexo.charAt(0)=='M') || (sexo.charAt(0)=='m')){
		            peso=(72.7*alt)-58;
		            System.out.println("O Peso Ideal:" + " " + df.format(peso) + " " + "Kg");
		        }
	        }while (((sexo.charAt(0) != 'M') && (sexo.charAt(0) != 'm')) && ((sexo.charAt(0) != 'F') && (sexo.charAt(0) != 'f'))) {		           
                sexo = JOptionPane.showInputDialog("Digite o Sexo");
            }       
	        if ((sexo.charAt(0)=='F') || (sexo.charAt(0)=='f')){
	            peso=((62.1*alt)-44.7);
	            System.out.println("O Peso Ideal:" + " " + df.format(peso) + " " + "Kg");
	        }
	        if ((sexo.charAt(0)=='M') || (sexo.charAt(0)=='m')){
	            peso=(72.7*alt)-58;
	            System.out.println("O Peso Ideal:" + " " + df.format(peso) + " " + "Kg");
	        }   
	        System.exit(1);
    }
}

Gostaria de saber se existe algum outro tipo de valor que eu possa utilizar além do double que funcione tanto com “,” quanto com “.”, ou se existe algum parâmetro que faça com que funcione com double. Agradeço se alguém puder me dar uma força.

eae mano blz?

bom que eu saiba não
a formatação numerica no java segue o padrão EUA
por isso que é assim

,###.##

, :arrow: separa os numeros mil, milhão, bilhão etc
. :arrow: separa os números decimais

bom agora vc pode tratar a sua string que foi digitada verificando como foi digitada e se foi digitada seguindo a formatação numerica que estamos acostumados vc modifica para o padrão descrito acima

utilizando um método do genero find-replace na sua string
seguindo a logica

verificar formatação é ,###.## sim? converte para double/float não? está assim .###,## entaum realiza uma alteração onde estiver . substituir por , e onde estiver a , substituir por um . isso em um tipo de busca sequencial por caractere
:wink:

[]'s
Erko Bridee

Valeu a dica AnjoSupremo. Obrigado!

A melhor maneira é usar o NumberFormat pra tratar a String.

http://java.sun.com/j2se/1.4.2/docs/api/java/text/NumberFormat.html

Nessa classe tem tudo que precisa…

Valeu a dica mavi, mas já consegui fazer funcionar. Abraço!