2010-06-25 16 views
7

Sto cercando di fare un JOptionPane ottenere un ingresso e assegnarlo a un int, ma io sono sempre alcuni problemi con i tipi di variabili.ingresso JOptionPane a int

sto cercando qualcosa di simile:

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

Ma io sono sempre:

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

che suona logica ancora, non riesco a pensare ad un altro modo per fare questo accadere.

Grazie in anticipo

risposta

6

utilizzare semplicemente:

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

Non puoi lanciare un String a un int, ma è possibile convertire utilizzando Integer.parseInt(string).

+0

Hmm ... Sembra che ho bisogno di aggiungere anche int ans = Integer.parseInt (JOptionPane.showInputDialog (telaio, "Testo", JOptionPane.INFORMATION_MESSAGE, null, nullo , "[testo di esempio per aiutare ingresso]") toString()).; – kxk

+0

@devil Se si utilizza la forma corretta di 'showinputdialog' non sarà necessario farlo. Ma, in alcuni casi, hai ragione. – jjnguy

+0

Vedo che vedo. Se posso chiedere una cosa, c'è un modo, utilizzando un ciclo forse, per controllare se l'input dato in realtà è un numero intero o no? Sth come: ... do {ans = JOptionPane.showInputDialog (...)} fino ans = intero? – kxk

4

Questo perché l'input che l'utente inserisce nel JOptionPane è un String ed è memorizzato e restituito come String.

Java non può convertire tra stringhe e il numero di per sé, è necessario utilizzare specifiche funzioni, basta usare:

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

Capisco, grazie! – kxk

0

prega di notare che Integer.parseInt genera NumberFormatException se la stringa passata non contiene un analizzabile stringa.

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

Ora il vostro Int_firstnumber contiene valore intero di String_fristNumber.

Speranza ha aiutato