gpt4 book ai didi

Java 阶乘 GUI

转载 作者:行者123 更新时间:2023-12-02 03:34:45 25 4
gpt4 key购买 nike

目标是创建一个利用 GUI 计算阶乘的程序。我需要创建一个 jPanel 或 jFrame 来显示程序的结果。然后我需要从 JTextField 获取文本并将其解析为整数,以便可以将其传递给构造函数。第三,需要使用称为阶乘的 int 类型实例变量创建对象类。该对象类需要一个名为 Factorial 的单参数构造函数,它接受 int 并将值分配给实例变量。然后它应该有一个使用返回类型为 int 的 for 循环计算阶乘的方法。最后,它应该在调用计算阶乘的方法后显示对象的值。这是我迄今为止的工作。

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

}

}

我的下一个文件是对象类:

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

}

}

}

这些是我尝试编译时遇到的以下错误:

.\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

为什么它不允许我将字符串阶乘解析为整数?

另外,如何以及在哪里调用computeFactorial方法来显示对象的值?

谢谢!如有任何帮助,我们将不胜感激!

最佳答案

听你的编译器:

error: Factorial.TempListener is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener

初学者很容易认为“哦,这是一堆废话,我会尝试一些东西,而不是试图理解它说什么”——但你需要理解它们,因为它们准确地告诉你编译器是什么提示。

这是它告诉你的,因为 Factorial.TempListener实现ActionListener ,它期望它有一个方法 actionPerformed(ActionEvent) .

如果ActionListenerabstract ,可以没有这个方法——但是这样你就无法实例化它,所以只需添加 abstract没有帮助。

所以你需要写actionPerformed(ActionListener) .

该方法应该做的事情超出了 SO 的用途——阅读并理解有关 Swing 的书籍或教程。

毫无疑问,一旦修复此问题,将会出现更多编译器错误。阅读它们;他们通常会告诉您问题出在哪里。

关于Java 阶乘 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com