n^3的java代码

任何一个自然数m的立方都可以写成m个连续奇数之和。

如:

1^3=1

2^3=3+5;

3^3=7+9+11

请编程实现;任一自然数n,求组成n^3的n个连续奇数,格式必须与例子相同。


我使用对话框来得到和输出数字。新建了个数字类来处理数字,输出需要的字符串。在异常外套了个死循环,使得每次得到结果后可以不必重新点击运行,可以直接输入数字

/**
 * 任意的数字的n的3次方都可以由3个连续奇数实现
 * 
 * @author hongjie
 * 
 */
public class MathNum {

	private String num = "";

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String num;
		int data;
		DealNumber dealNum;
		// 采用异常的机制判断输入的是否是数字
		while (true) {
			try {
				num = JOptionPane.showInputDialog(null, "请输入任意的一个数字");
				data = Integer.parseInt(num);
				dealNum = new DealNumber(data);
				dealNum.JudeNum();
			} catch (Exception e) {
				JOptionPane.showMessageDialog(null, "你输入的数字非法,请重新输入");
			}
		}
	}

}

/**
 * 处理数字的类
 * 
 * @author hongjie
 * 
 */
class DealNumber {
	private int num;
	private String ThreePower = "^3=";
	private int count = 1;
	private String strNum = "";

	public DealNumber(int num) {
		this.num = num;
	}

	/*
	 * 将输入的数字以3个连续的奇数输出 3个连续的奇数 也可以是中间的奇数的3倍,即 :3^3=7+9+11=9*3;
	 */
	public void GetNumber() {
		while (true) {
			if ((count * num) == (num * num * num)) {
				break;
			}
			// 计数器 加1
			count += 1;
		}
	}

	/*
	 * 判断数字是否是大于3的整数
	 */
	public void JudeNum() {
		if (num == 1) {
			JOptionPane.showMessageDialog(null, num + ThreePower + "1");
		} else if (num == 2) {
			JOptionPane.showMessageDialog(null, num + ThreePower + "3+5");
		}
		// 当输入的数字大于等于3的时候
		else {
			GetNumber();
			StrintNumber();
			JOptionPane.showMessageDialog(null, num + ThreePower + strNum);
		}
	}

	/*
	 * 得到n个连续的奇数的字符串形式
	 */
	public void StrintNumber() {
		int firstData = 0;
		// 假如n是偶数
		if (num / 2 == 0) {
			firstData = (count - 1) - (num / 2 - 1) * 2;
		}
		// 假如n是奇数
		else {
			firstData = count - (num - 1);
		}
		// 得到要输出的字符串
		for (int i = 0; i < num; i++) {
			strNum += firstData;
			firstData += 2;
			if (i != num - 1) {
				strNum += "+";
			}
		}
	}
}

这是当输入的数字是6的时候,得到的结果:

这是当输入的不是数字的时候,得到的结果:


我对数字的处理是通过异常来得到的,其实判断输入是否为数字还可以通过正则表达式来实现,这也是比较常见的方法。

当然,对于这个题还有更简单的实现方法,其实也是个数学方法。

我们知道连续的几个奇数,可以表示为中间的数字的倍数,比如  5,7,9 可以表示为7*3
那么:
假设 m为连续的奇数的中间数字。
则: n^3=m*n
n^2=m
那么中间的那个数字为:m的开方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值