Laufzeitfehler

Status
Nicht offen für weitere Antworten.

brasilian

Aktives Mitglied
Hallo,

ich bin in Java noch ein ziemlicher Anfänger und beschäfftige mich gerade mit Eingabefeldern. Mit dem unteren Programm möchte ich zwei Eingabefelder miteinander addieren und die Summe im dritten Ein(Aus)gabe-Feld anzeigen.

Ich habe das Programm fehlerfrei compiliert bekommen. Will ich es jedoch starten, erhalte ich immer die Meldung TextAdd.java mit Laufzeitfehlern.

Ich kann somit das Programm nicht simulieren.

Code:
// Datei: TextAdd.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class TextAdd extends JPanel implements ActionListener {
private JTextField t1,t2,t3;
int a,b,c;
String texta,textb,textc;

public static void main(String[] args)
{
JFrame frame = new JFrame("Textfeld-Addition");
frame.getContentPane().add(new TextAdd());
frame.setSize(300, 200);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} );
}

public TextAdd()
{
t1 = new JTextField(10);
texta=t1.getText();
a = Integer.parseInt(texta);

t2 = new JTextField(10);
textb=t2.getText();
b = Integer.parseInt(textb);

t3 = new JTextField(10);
c=a+b;
textc=String.valueOf(c);
t3.setText(textc);
}

public void actionPerformed(ActionEvent e)
{
JTextField t = (JTextField)e.getSource();
if (t == t1)
{
System.out.println("Feld 1: " + t1.getText());
t2.requestFocus();
}
else if (t == t2)
{
System.out.println("Feld 2: " + t2.getText());
t3.requestFocus();
}
else
{
System.out.println("Feld 3: " + t3.getText());
t1.requestFocus();
}
}
}
Vielen Dank im Vorraus für eure Hilfe

Brasilian
 
B

bygones

Gast
Hi,

das Hauptproblem war, dass du beim Initialiseren schon versucht hast den Inhalt der Textfelder auszulesen, und in Zahlen zu verwandeln. Da diese beim Initialisieren einen leeren String erhalten wird eine NumberFormatException geworfen (Tipp: Schau dir die Laufzeitfehler von Java genau, sie sagen eigentlich schon alles !!).

Ich habe mal ein (nicht layoutmäßig schönes) Beispiel geschrieben, dass deine Aufgabe löst. Über den Button wird dann die Berechnung gestartet.

Eine weitere Sache. Du darfst Objekte in java nicht mit '==' vergleichen. Nimm dazu die Methode equals !!


Code:
import java.awt.event.*;
import javax.swing.*;

public class TextAdd extends JPanel implements ActionListener {
	private JTextField t1, t2, t3;
	int a, b, c;
	String texta, textb, textc;

	public static void main(String[] args) {
		JFrame frame = new JFrame("Textfeld-Addition");
		frame.getContentPane().add(new TextAdd());
		frame.setSize(300, 200);
		frame.setVisible(true);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public TextAdd() {
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		t1 = new JTextField(10);
		add(t1);

		t2 = new JTextField(10);
		add(t2);
		t3 = new JTextField(10);
		t3.setEditable(false);
		add(t3);
		
		JButton b = new JButton("Compute");
		b.addActionListener(this);
		add(b);
	}

	public void actionPerformed(ActionEvent e) {
		String s1 = t1.getText();
		String s2 = t2.getText();
		try {
			int a = Integer.parseInt(s1);
			int b = Integer.parseInt(s2);
			t3.setText((a + b) + "");
		}
		catch(NumberFormatException nfe) {
			
		}
	}
}
[/code]
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben