—————话不多说,直接放代码!!—————
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SWING_Experiment_Factorial {
public static void main(String[] args) {
JFrame jf = new JFrame("大数阶乘");
jf.setBounds(300,100,400,200);
jf.setLayout(new BorderLayout());
JPanel jPanel1 = new JPanel(new BorderLayout());
JTextField jt1 = new JTextField("请输入数字",20);
JButton jb = new JButton("计算阶乘");
JLabel jl = new JLabel("结果为:");
jPanel1.add(jb,BorderLayout.SOUTH);
jPanel1.add(jt1,BorderLayout.CENTER);
jf.add(jPanel1,BorderLayout.NORTH);
jf.add(jl,BorderLayout.CENTER);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jl.setText("结果为:"+ chen(Integer.parseInt(jt1.getText())));
}
});
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private static String chen(int num){
int []data = new int[100];
int t = 0;
int Op = 0;
int p = 1;
int m = 0;
int r = 1;
String results = "";
data[0] = 1;
for (int i = 2;i <= num;i++){
for (int n = 0;n < p;n++){
data[n] = (data[n] * i) + m;
m = 0;
if (data[n] >= 10){
m = data[n] / 10;
data[n] %= 10;
p++;
}
if (r < p)
r = p;
}
p = r;
}
for (int q = r;q >= 0;q--) {
if (data[q] != 0){
t = 1;
if (Op < t)
Op = t;
}
if (Op == 1){
results = results+data[q];
}
}
return results;
}
}
这是第一个Swing编程自己实现的项目,所以做的很简陋,希望大家多多斧正!