A resolução do seu problema esta em você criar uma variável do tipo String que receba este valor do InputDialog e converte-la para o seu tipo desejado
Stringrecebe=JoptionPane.showInputDialog(null,"Entre com um valor");intconverteRecebeInt=Integer.parseInt(recebe);// converte String para intfloatconverteRecebeFloat=Float.parseFloat(recebe);//converte String para floatdoubleconverteRecebeDouble=Double.parseDouble(recebe);//converte de String para Double
Se você estava querendo converter ou atribuir diretamente não é possível, pois, o metodo showInputDialo(); só retorna valores do tipo String
Espero ter ajudado,
DavidUser
Sim, uma showInputDialog() so emite valores inteiros, mas
é sim possível declara e atribuir da seguinte forma: (já se converte a string emitida na própia atribuição).
como recebe é a String com valor declarado o InputDialog utilize o própio valor:
intconverteRecebeInt=Integer.parseInt(JoptionPane.showInputDialog(null,"Entre com um valor"); // converte a String recebida do input para int
inteiro converteRecebeInt [color=red]recebe o[/color] [color=blue]valor inteiro[/color] da InputDialog
E
elizier
Obrigado pela ajuda.
M
marcobiscaro2112
Para converter números de ponto flutuante, estes devem estar com vírgula como separador decimal. E eu recomendo que se use double.
Por exemplo:
StringvalorDigitado=JOptionPane.showInputDialog(null,"Digite o preço do produto:");doublepreco=Double.parseDouble(valorDigitado);JOptionPane.showMessageDialog(null,"Preço digitado: "+preco);
E
elizier
Mas eu usei virgula como separador decimal e deu erro. Depois usei ponto e deu certo, inclusive fiz uma soma pra ver se tinha convertido mesmo.
Eu fiz do jeito que DavidUser explicou. É mais prático.
R
Rizzo
Não é vírgula, é ponto.
Att. Thiago Rizzo.
DavidUser
cria um método de teste para impedir esses erro olha ai o método tipo encontra o tipo:
publicstaticvoidmain(String[]args){Stringx=JOptionPane.showInputDialog(null,"Entre com um valor");floatconverteRecebeInt;if(tipo(x)==true){converteRecebeInt=Float.parseFloat(JOptionPane.showInputDialog(null,"Entre com um valor"));}elseconverteRecebeInt=Float.parseFloat(JOptionPane.showInputDialog(null,"Entre com um valor"));}//encotra o tipo, true para inteiro, false para String.publicstaticbooleantipo(Stringx){booleanz=true;try{if(Integer.parseInt(x)!=0);z=true;if(x.equals("0"))z=true;}catch(Exceptione){JOptionPane.showMessageDialog(null,"VALOR INVÁLIDO!\nOs numeros são separados por ponto,\n\bcarácteres inválidos:\b\nA-Z, a-z, ^,~,/,\,',\",!,?,@,#,$,%,¨,&,*,(,),[,],+,-,|,.,;,=","ERRO",JOptionPane.ERROR_MESSAGE);z=false;}returnz;}
da uma olhada se não entendeu pergunta aki q eu explico.(testa ai pra ver oq acontece)
DavidUser
corrigindo agora ele lê e se inválido repete a pergunta:
Stringx=JOptionPane.showInputDialog(null,"Entre com um valor inteiro:");floatconverteRecebeInt;while(tipo(x)==false){x=JOptionPane.showInputDialog(null,"Entre com um valor válido:");}if(tipo(x)==true)converteRecebeInt=Float.parseFloat(x);}publicstaticbooleantipo(Stringx){booleanz=false;try{if(x.equals("0"))z=true;if(Integer.parseInt(x)!=0);z=true;}catch(Exceptione){JOptionPane.showMessageDialog(null,"\"VALOR INVÁLIDO!\nOs numeros são separados por ponto,\n\bcarácteres inválidos:\b\nA-Z, a-z, ^, ~, /, \, ', \", !, ?, @, #, $, %, ¨, &, \n*, (, ), [, ], +, -, |, ., ;, = \"","ERRO",JOptionPane.ERROR_MESSAGE);z=false;}returnz;}
dler
Amigo seu programa nao esta funcionando corretamente pelo menos tentei executar ele aki e deu um problema.
Ele nao aceita o numero separado por ponto ele informa que foi digitado errado mesmo usando o ponto para separar os numeros.
Gostaria de poder utilizar essa funcao em um programa que estou desenvolvendo se conseguir postar a correcao agradeceria!