Das Ziel ist es, ein Programm zu erstellen, das eine GUI verwendet, um eine Fakultät zu berechnen. Ich muss ein jPanel oder jFrame erstellen, um die Ergebnisse des Programms anzuzeigen. Dann muss ich den Text von JTextField abrufen und es zu einem Integer analysieren, damit es an einen Konstruktor übergeben werden kann. Drittens muss eine Objektklasse mit einer Instanzvariable vom Typ int namens factorial erstellt werden. Diese Objektklasse benötigt einen einzelnen Argumentkonstruktor namens Factorial, der einen int akzeptiert und den Wert der Instanzvariablen zuweist. Dann sollte es eine Methode haben, die die Fakultät unter Verwendung einer for-Schleife mit einem Rückgabetyp von int berechnet. Schließlich sollte der Wert des Objekts angezeigt werden, nachdem die Methode aufgerufen wurde, die die Fakultät berechnet. Hier ist meine bisherige Arbeit.Java Factorial GUI
import javax.swing.JFrame;
public class factorialCalc
{
public static void main (String[] args)
{
JFrame frame=new JFrame ("Factorial Calculator");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
Factorial panel=new Factorial();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Und meine nächste Datei ist die Objektklasse:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Factorial extends JPanel
{
private int factorial;
private JLabel inputLabel,resultLabel;
private JTextField factorialText;
private JButton factButton;
//Constructor: sets up main GUI components
public void FactorialPanel(int factorial)
{
this.factorial=factorial;
inputLabel= new JLabel ("Please enter an integer:");
factButton = new JButton("Compute");
TempListener listener=new TempListener();
factButton.addActionListener(listener);
factorialText = new JTextField();
factorialText.addActionListener (new TempListener());
add(inputLabel);
add(factorialText);
add(resultLabel);
}
//represents a listener for the button
private class TempListener implements ActionListener
{
//performs factorial operation when the 'Compute' button is pressed
public int computeFactorial(ActionEvent event)
{
int text=Integer.parseInt(factorial);
int f =1;
for(int i=text;i>=1;i--)
{
f = f*i;
}
resultLabel.setText(Integer.toString(f));
}
}
}
Dies sind die folgenden Fehler, die ich bekomme, wenn ich zu kompilieren versuchen:
.\Factorial.java:31: error: Factorial.TempListener is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener
private class TempListener implements ActionListener
^
.\Factorial.java:37: error: incompatible types: int cannot be converted to String
int text=Integer.parseInt(factorial);
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors
Warum es mich nicht analysieren der String factorial in und Integer?
Wie und wo kann ich die computeFactorial-Methode aufrufen, um den Wert des Objekts anzuzeigen?
Vielen Dank! Jede Hilfe wird geschätzt!
'factorial' wird als' int' deklariert, nicht als 'String'. – Grayson
'factorial' ist bereits ein' int', also wird die Verwendung von 'Integer.parseInt (String)' nicht funktionieren, und selbst wenn dies der Fall wäre, wäre es nutzlos. Ihr 'TempListener' muss 'public void actionPerformed (ActionEvent e)' deklarieren, da es 'ActionListener' implementiert –