JAVA Swing编程实现大数阶乘

mac2026-01-08  8

—————话不多说,直接放代码!!—————

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编程自己实现的项目,所以做的很简陋,希望大家多多斧正!

最新回复(0)