2010-06-25 57 views
7

Estoy tratando de hacer que JOptionPane obtenga una entrada y la asigne a un int, pero estoy obteniendo algunos problemas con los tipos de variables.JOptionPane Entrada a int

Estoy intentando algo como esto:

Int ans = (Integer) JOptionPane.showInputDialog(frame, 
      "Text", 
      JOptionPane.INFORMATION_MESSAGE, 
      null, 
      null, 
      "[sample text to help input]"); 

Pero me estoy:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot 
be cast to java.lang.Integer 

que suena lógico, sin embargo, no puedo pensar en otra manera para que esto suceda.

Gracias de antemano

Respuesta

6

Simplemente utilizan:

int ans = Integer.parseInt(JOptionPane.showInputDialog(frame, 
     "Text", 
     JOptionPane.INFORMATION_MESSAGE, 
     null, 
     null, 
     "[sample text to help input]")); 

No se puede emitir un String a un int, pero se puede convertir utilizando Integer.parseInt(string).

+0

Hmm ... parece que tengo que añadir también int ans = Integer.parseInt (JOptionPane.showInputDialog (marco, "texto", JOptionPane.INFORMATION_MESSAGE, nulo, nulo , "[texto de muestra para ayudar a ingresar]"). ToString()); – kxk

+0

@devil Si utiliza la forma correcta de 'showinputdialog', no tendrá que hacer eso. Pero, tienes razón en algunos casos. – jjnguy

+0

Veo que veo. Si puedo preguntar una cosa más, ¿hay alguna manera, usando un bucle tal vez, para verificar si la entrada dada en realidad es un número entero o no? Algo como: ... do {ans = JOptionPane.showInputDialog (...)} hasta ans = entero? – kxk

4

Esto porque la entrada que el usuario inserta en el JOptionPane es String y se almacena y se devuelve como String.

Java no puede convertir entre las cuerdas y número por sí mismo, tiene que usar funciones específicas, sólo tiene que utilizar:

int ans = Integer.parseInt(JOptionPane.showInputDialog(...)) 
+0

¡Lo entiendo, gracias! – kxk

0

Tenga en cuenta que Integer.parseInt lanza una NumberFormatException si la cadena pasada no contiene un parsable cuerda.

0
// sample code for addition using JOptionPane 

import javax.swing.JOptionPane; 

public class Addition { 

    public static void main(String[] args) { 

     String firstNumber = JOptionPane.showInputDialog("Input <First Integer>"); 

     String secondNumber = JOptionPane.showInputDialog("Input <Second Integer>"); 

     int num1 = Integer.parseInt(firstNumber); 
     int num2 = Integer.parseInt(secondNumber); 
     int sum = num1 + num2; 
     JOptionPane.showMessageDialog(null, "Sum is" + sum, "Sum of two Integers", JOptionPane.PLAIN_MESSAGE); 
    } 
} 
0
String String_firstNumber = JOptionPane.showInputDialog("Input Semisecond"); 
int Int_firstNumber = Integer.parseInt(firstNumber); 

Ahora su Int_firstnumber contiene el valor entero de String_fristNumber.

espero que ayudó