Was passiert hier:
outCel.setText( celsTemp + "" );
Der Text, der in dem Textfeld outCel
erscheint
wird mit der setText
Methode gesetzt.
Der Parameter für diese Methode sollte eine Referenz auf einen String
sein.
Aber celsTemp
ist ein Integer und wird nicht funktionieren.
Aber in dem Folgenden
celsTemp + ""
wird das +
Stringverkettung bedeuten,
so dass der Integer in celsTemp
in einen String
konvertiert wird.
Ein Leerstring wird mit ihm verkettet,
was einen String
ergibt, der richtige Typ für den Parameter.
Die vollständige Applikation steht unten. Natürlich werden wir das in eine Datei kopieren, sie kompilieren und ausführen.
import java.awt.*; import java.awt.event.*; import javax.swing.* ; public class FahrConvert extends JFrame implements ActionListener { JLabel heading = new JLabel("Convert Fahrenheit to Celsius"); JLabel inLabel = new JLabel("Fahrenheit "); JLabel outLabel = new JLabel("Celsius "); JTextField inFahr = new JTextField( 7 ); JTextField outCel = new JTextField( 7 ); int fahrTemp ; int celsTemp ; FahrConvert( String title ) { super( title ); setLayout( new FlowLayout() ); inFahr.addActionListener( this ); outCel.setEditable( false ); add( heading ); add( inLabel ); add( outLabel ); add( inFahr ); add( outCel ); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } // Die Applikation public int convert( int F ) { return ( (F-32) * 5 ) / 9; } public void actionPerformed( ActionEvent evt) { String userIn = inFahr.getText() ; fahrTemp = Integer.parseInt( userIn ) ; celsTemp = convert( fahrTemp ) ; outCel.setText( celsTemp+"" ); repaint(); } public static void main ( String[] args ) { FahrConvert fahr = new FahrConvert( "F to C" ) ; fahr.setSize( 200, 150 ); fahr.setVisible( true ); } }
Was passiert, wenn der Anwender Text eingibt, den Integer.parseInt()
nicht in einen Integer konvertieren kann?