如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算

public class T1 {

	/**
	 * 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。
	 */
	@Test
	public void test1() {
		String number1 = "4324328732789";
		String number2 = "2383244324324325898";
		String result = doAdd(number1, number2);
		System.out.println(result);

	}

	/**
	 * @param num1
	 * @param num2
	 * @return  返回结果
	 * 1.计算小的那个左边需要补几个0
	 * 2.从右边开始一个个的开始相加
	 */
	public static String doAdd(String num1, String num2) {
		String str = "";
		int lena = num1.length();
		int lenb = num2.length();
		
		int maxlength = lena > lenb ? lena : lenb;
		int minlength = lena < lenb ? lena : lenb;

		String strtemp = "";
		for (int i = (maxlength - minlength); i > 0; i--) { // 计算左边需要补几个0
			strtemp += 0;
		}
		if (maxlength == lena) { // 左边补零
			num2 = strtemp + num2;
		} else {
			num1 = strtemp + num1;
		}
		int jw = 0;
		for (int i = (maxlength - 1); i >= 0; i--) {
			int temp = 0;
			int number1 = Integer.valueOf(String.valueOf(num1.charAt(i)));
			int number2 = Integer.valueOf(String.valueOf(num2.charAt(i)));

			if (number1 + number2 + jw > 10 && i != 0) {
				temp = number1 + number2 + jw - 10;
			} else {
				temp = number1 + number2 + jw;
			}
			str = String.valueOf(temp) + str;
		}
		return str;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值