package leetcode;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
String a = "999";
String b = "1";
//将两个字符串分解成数组 分别为arr1和arr2
int[] arr1 = new int[a.length()];
int[] arr2 = new int[b.length()];
for (int i = 0; i < a.length(); i++) {
arr1[i] = Integer.parseInt(a.substring(i, i + 1));
}
for (int i = 0; i < b.length(); i++) {
arr2[i] = Integer.parseInt(b.substring(i, i + 1));
}
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
//用carry记录进位值
int carry = 0;
int sum = 0;
int i = arr1.length - 1;
int j = arr2.length - 1;
int[] store = new int[a.length() + 1];
int count = 0;
//将对应的位相加
while (i >= 0 || j >= 0) {
int num1 = i < 0 ? 0 : arr1[i];
int num2 = j < 0 ? 0 : arr2[j];
sum = carry + num1 + num2;
carry = sum / 10;
store[count++] = sum % 10;
i--;
j--;
}
//保存最后一次进位值
store[count] = carry;
System.out.println(Arrays.toString(store));
//如果最后一次进位值为0则舍去
int f = carry == 0 ? store.length - 2 : store.length - 1;
StringBuffer sb = new StringBuffer();
//将所得结果拼接
for (int a1 = f; a1 >= 0; a1--) {
sb.append(store[a1]);
}
System.out.println(sb);
}
}
Java实现两个大数相加
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 大数相乘 假设有A和B两个大数,位数分别为a和b。根据我们平常手动计算乘法的方式可以看出,最终的结果的位数c一定小...
- 栈 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈...
- 需求:背景减低服务器存储压力,优化客户端上报数据大小用于节省用户网络。这个就需要字符串转大树或者转枚举。字符串md...