目的は、GUIを利用して階乗を計算するプログラムを作成することです。プログラムの結果を表示するには、jPanelまたはjFrameを作成する必要があります。次に、JTextFieldからテキストを取得し、それをコンストラクタに渡すことができるように整数に解析する必要があります。 第3に、factorialというint型のインスタンス変数を使用してオブジェクトクラスを作成する必要があります。このオブジェクトクラスには、intを受け入れ、その値をインスタンス変数に代入するFactorialという単一の引数コンストラクタが必要です。次に、戻り値の型がintのforループを使用して階乗を計算するメソッドが必要です。最後に、階乗を計算するメソッドを呼び出した後にオブジェクトの値を表示する必要があります。これまでの私の仕事はここにあります。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);
}
}
そして、私の次のファイルには、Objectクラスである:
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メソッドを呼び出してオブジェクトの値を表示できますか?
ありがとうございました!どんな助けもありがとう!
int text=Integer.parseInt(factorialText.getText());
:すでにint
(したがってエラー)である代わりに、ここでfactorial
を使用しての
'factorial'は' int'として宣言され、 'String'では宣言されません。 – Grayson
'factorial'はすでに' int'であるので、 'Integer.parseInt(String)'を使うとうまくいきません。あなたの 'TempListener'は' ActionListener'を実装しているので 'public void actionPerformed(ActionEvent e)'を宣言する必要があります –