2010-06-25 24 views
7

J'essaie de faire en sorte qu'un objet JOptionPane reçoive une entrée et l'affecte à un int mais je rencontre des problèmes avec les types de variables.JOptionPane Entrée à int

J'essaie quelque chose comme ceci:

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

Mais je reçois:

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

Ce qui semble logique encore, je ne peux pas penser à une autre façon de ce faire.

Merci à l'avance

Répondre

6

utilisent simplement:

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

Vous ne pouvez pas jeter un String à un int, mais vous pouvez le convertir en utilisant Integer.parseInt(string).

+0

Hmm ... il semble que je dois ajouter aussi int ans = Integer.parseInt (JOptionPane.showInputDialog (cadre, "Texte", JOptionPane.INFORMATION_MESSAGE, null, null , "[exemple de texte pour faciliter la saisie]"). ToString()); – kxk

+0

@devil Si vous utilisez la forme correcte de 'showinputdialog', vous n'aurez pas besoin de faire cela. Mais, vous avez raison dans certains cas. – jjnguy

+0

Je vois que je vois. Si je peux demander une chose de plus, est-il possible, en utilisant une boucle peut-être, de vérifier si l'entrée donnée est réellement un entier ou non? Sth comme: ... do {ans = JOptionPane.showInputDialog (...)} jusqu'à ans = entier? – kxk

4

Cela parce que l'entrée que l'utilisateur insère dans le JOptionPane est un String et il est stocké et renvoyé sous la forme String.

Java ne peut pas convertir entre les chaînes et le nombre par lui-même, vous devez utiliser des fonctions spécifiques, il suffit d'utiliser:

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

Je comprends, merci! – kxk

0

S'il vous plaît noter que Integer.parseInt jette un NumberFormatException si la chaîne passée ne contient pas analysable chaîne.

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); 

Maintenant, votre Int_firstnumber contient la valeur entière de String_fristNumber.

espère que cela a aidé