Lendo Int ou Float com //JOptionPane.showInputDialog

Olá Pessoal!
Como faço para ler um tipo diferente de String (int, float, etc) no JOptionPane.showInputDialog?

op = JOptionPane.showInputDialog(null, "Digite o numero: ");

A variável op é do tipo int, quando eu chamo o método acima ele pede pra converter a variável para o tipo String. :frowning:

Desde já agradeço.

leia sobre metodos de conversão.
no caso a estrutura é assim:
.parse(String);

exemplo:
(resolvendo seu problema)
int op =Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero: "));

op = a resposta que deve ser inteira
JOptionPane.showInputDialog(null, "Digite o numero: ") = é do tipo String

Método Integer.parseInt = converte String para Inteiro,

Faz parte do pacote java.lang
no Inteiro java.lang.Integer

leia aki os métodos de converção.

1 curtida

Boa Tarde elizier,

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

       String recebe = JoptionPane.showInputDialog(null,"Entre com um valor");

       int converteRecebeInt = Integer.parseInt(recebe); // converte String para int
       float converteRecebeFloat = Float.parseFloat(recebe); //converte String para float
       double converteRecebeDouble = 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,
:smiley:

2 curtidas

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:

int converteRecebeInt = 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

Obrigado pela ajuda.

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:

String valorDigitado = JOptionPane.showInputDialog(null, "Digite o preço do produto:");
double preco = Double.parseDouble(valorDigitado);
JOptionPane.showMessageDialog(null, "Preço digitado: " + preco);

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.

Não é vírgula, é ponto.

Att. Thiago Rizzo.

cria um método de teste para impedir esses erro olha ai o método tipo encontra o tipo:

[code]public static void main(String[]args){
String x=JOptionPane.showInputDialog(null,“Entre com um valor” );
float converteRecebeInt;
if (tipo(x)==true){
converteRecebeInt = Float.parseFloat(JOptionPane.showInputDialog(null,“Entre com um valor” ));
}else converteRecebeInt = Float.parseFloat(JOptionPane.showInputDialog(null,“Entre com um valor” ));

}
//encotra o tipo, true para inteiro, false para String.
    public static boolean tipo(String x){
    boolean z=true;
    try{
    if (Integer.parseInt(x)!=0);
    z=true;
    if (x.equals("0")) z=true;
    }catch(Exception e){
        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;
    }
    return z;
    }[/code]

da uma olhada se não entendeu pergunta aki q eu explico.(testa ai pra ver oq acontece)

corrigindo agora ele lê e se inválido repete a pergunta:

[code] String x=JOptionPane.showInputDialog(null,“Entre com um valor inteiro:”);
float converteRecebeInt;
while (tipo(x)==false){
x=JOptionPane.showInputDialog(null,“Entre com um valor válido:”);
}
if (tipo(x)==true)converteRecebeInt = Float.parseFloat(x);

}
    public static boolean tipo(String x){
    boolean z=false;
    try{
    if (x.equals("0"))z=true;
    if (Integer.parseInt(x)!=0);
    z=true;
    }catch(Exception e){
        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;
    }
    return z;
    }[/code]

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!
:stuck_out_tongue: