用字符串模拟两个大数相加——java实现详解编程语言
2023-06-13 09:20:43 时间
问题:
大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求。可以使用字符串来表示大数,模拟大数相加的过程。
思路:
1.反转两个字符串,便于从低位到高位相加和最高位的进位导致和的位数增加;
2.对齐两个字符串,即短字符串的高位用‘0’补齐,便于后面的相加;
3.把两个正整数相加,一位一位的加并加上进位。
具体代码如下:
/** * 用字符串模拟两个大数相加 * @param n1 加数1 * @param n2 加数2 * @return 相加结果 public static String add2(String n1,String n2) StringBuffer result = new StringBuffer(); //1、反转字符串 n1 = new StringBuffer(n1).reverse().toString(); n2 = new StringBuffer(n2).reverse().toString(); int len1 = n1.length(); int len2 = n1.length(); int maxLen = len1 len2 ? len1 : len2; boolean nOverFlow = false; //是否越界 int nTakeOver = 0 ; //溢出数量 //2.把两个字符串补齐,即短字符串的高位用0补齐 if(len1 len2) for(int i = len1 ; i len2 ; i++) n1 += "0"; else if (len1 len2) for(int i = len2 ; i len1 ; i++) n2 += "0"; //3.把两个正整数相加,一位一位的加并加上进位 for(int i = 0 ; i maxLen ; i++) int nSum = Integer.parseInt(n1.charAt(i) +"") + Integer.parseInt(n2.charAt(i) +""); if(nSum = 10) if(i == (maxLen - 1)) nOverFlow = true; nTakeOver = 1; result.append(nSum - 10); else nTakeOver = 0; result.append(nSum); //如果溢出的话表示位增加了 if(nOverFlow) result.append(nTakeOver); return result.reverse().toString(); }
测试:
public static void main(String[] args) String str = add2("911","222"); System.out.println(str); }
结果:
1133
致谢:感谢您的阅读!
15133.html
cjava相关文章
- java random函数原理_详解JAVA中Random()函数的用法
- excel宏 java,Microsoft Excel宏运行Java程序
- java传真发送,用Java发送传真解决之道
- java工程师_Java工程师是青春饭吗?[通俗易懂]
- java启动器_JAVA基础:Java 启动器如何查找类
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- 【说站】java同步方法的使用
- java使用xquery_如何使用Java XQuery
- java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
- 为Java项目添加Redis缓存的方法
- Java模拟表单post提交,可支持图片上传详解编程语言
- 模拟Ping操作的一个Java类详解编程语言
- Java JDBC 小例子详解编程语言
- java多线程示例 模拟生产者消费者详解编程语言
- Java学习笔记之九java二维数组及其多维数组的内存应用拓展延伸详解编程语言
- Java学习笔记之三java中的变量和常量详解编程语言
- 实现Linux上的Java环境:从安装到配置(linux安装java环境)
- key处理解决Java操作Redis过期key的方法(redisjava过期)
- 实现高并发:Java利用Redis秒杀成功(java秒杀redis)
- Linux平台上C语言接口调用Java语言实现(linux c调java)
- Java模拟Oracle实现稳定数据库性能(java模仿oracle)
- 缓存使用Redis让Java代码更加迅速缓存设置(redis设置java)
- java多线程应用实现方法