2

Java求任意正整数的阶乘

作者:楼竞  发表于:2006年03月30日 21:31  分类:Program   3,672 次阅读 

以前曾经用C++写过一个求大数的阶乘,见:用C++求一个大数的阶乘。在Java中,只要利用BigInteger类,可以完成同样功能;这里也测试了异常以及Dialog的产生。

开发环境:Windows Server 2003 Standard Edition SP1, J2SDK 1.5.0_06, Eclipse 3.1.2

源代码如下:

//Factorial.java
import java.math.BigInteger;
import javax.swing.*;
/**
* 计算任意正整数的阶乘
* @author 楼竞
* http://www.loujing.com
*/
public class Factorial {
	public static void main(String[] args) {
		BigInteger x = BigInteger.valueOf(1); //存储结果
		int num = 1; //待计算的整数
		String s = null;
		boolean correct = false;
		do {
			try {
				s = JOptionPane.showInputDialog(null, "请输入要计算的数(正整数):");
				if (s == null) break;
				else {
					num = Integer.parseInt(s);
					if (num < 0)
						throw new IllegalArgumentException();
					else correct = true;
				}
			}
			catch (NumberFormatException e) {
				JOptionPane.showMessageDialog(null, "数据格式错误!");
				continue;
			}
			catch (IllegalArgumentException e) {
				JOptionPane.showMessageDialog(null,"请输入一个正整数!");
				continue;
			}
			break;
		} while (true);
		if (correct == true) {
			for (int i = 1; i <= num; i++)
				x = x.multiply(BigInteger.valueOf(i));
			JTextArea textArea = new JTextArea(x.toString(), 5, 30);
			textArea.setEditable(false);
			textArea.setLineWrap(true);
			Object[] object = {num + " ! : ",new JScrollPane(textArea)};
			JDialog dialog = new JOptionPane(object).createDialog(null,"阶乘的结果");
			dialog.setVisible(true);
		}
		System.exit(0);
	}
}

运行结果如图:

Java求任意正整数的阶乘--输入界面
Java求任意正整数的阶乘--输出结果

历史上的今天:

  1. 2011:  Pattern Recognition Homework 2 (C-Means)(0)

本文固定链接: http://www.loujing.com/blog/java-factorial/ | 楼竞网站

Java求任意正整数的阶乘:目前有2 条留言

  1. CFan发表于 2011年06月04日 01:36
    [回复]

    阶乘啊。。。只用递归写过。。。求一个大数的阶乘的话。。。。没尝试过。菜鸟级,不要见笑。。

    楼竞回复于2011年06月07日 15:18

    最早是C++编程思想里的一个思路,后来看Java,就又写了一个。

给我留言

快捷键:Ctrl+Enter