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实现两个大数相加
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 大数相乘 假设有A和B两个大数,位数分别为a和b。根据我们平常手动计算乘法的方式可以看出,最终的结果的位数c一定小...
- 栈 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈...
- 需求:背景减低服务器存储压力,优化客户端上报数据大小用于节省用户网络。这个就需要字符串转大树或者转枚举。字符串md...