Java教程:任意大整数的相加运算

大家好,今天我给大家带来了一个小程序,它实现了对两个任意大整数的相加运算。

我们知道,在Java中对整数进行运算可以使用int类型,如果范围不够,可以使用long,再大可以使用double,如果想对更大的整数运算可以使用BigInteger类。今天,我们就自己来编写一段程序,实现对两个任意大的整数的加法运算。

本文将按照以下的步骤讲解:

实现思路完整代码清单结束语一. 实现思路1.1 存储方式

由于要表示一个很大的数字,所以,不能用基本类型存储。这里我们使用String存储,例如:

String s1 = “1234567890123456789012345”; String s2 = “66666666666666666666”;1.2 运算方式

很显然,两个String类型不能做加法运算,所以我们要逐一截取出两个字符串的最后两个数字,然后将它们转换为int类型再做加法运算,并将结果再存储到一个新的结果字符串中,这样从低位到高位,依次相加,最后的结果字符串中就是相加结果。我们先看一个简单的例子。

1.3 简单示例例如有以下两个存储了数字的字符串:String s1 = “1234”; String s2 = “18”;我们要截取出两个字符串的最低位4和8,并转换为int值,然后进行加法运算。但这里涉及到一个“进位”的问题,如果4 + 8,应该是:进1落2,如果是4 + 3,应该表示为:进0落7,所以我们要定义变量这个“进位”的值。String result = “”;//存储结果字符串 int c = 0;//存储进位的值 //截取两个字符串的最末尾数字 String r1 = s1.substring(s1.length() – 1); String r2 = s2.substring(s2.length() – 1); //将最后一位的字符串转换为int值 int n1 = Integer.parseInt(r1); int n2 = Integer.parseInt(r2); //相加 int v = n1 + n2; //取出个位,并添加到result字符串中 result += v % 10; //取出进位值,存储到c中 c = v / 10; //更改两个字符串,分别去掉最后一位 s1 = s1.substring(0, s1.length() – 1); s2 = s2.substring(0, s2.length() – 1); //测试打印 System.out.println(“结果字符串:” + result); System.out.println(“进位值:” + c); System.out.println(“s1去掉最后一位:” + s1); System.out.println(“s2去掉最后一位:” + s2);

程序运行后,打印结果为:

结果字符串:2 进位值:1 s1去掉最后一位:123 s2去掉最后一位:1

根据这个思路,我们就可以使用一个循环,从低位到高位分别计算每位的和。

二. 完整代码清单package com.heima.se; / * 大整数加法运算 * 1、弹出两个大整数最后面的整数 * 2、用这两个整数以及进位值求和 * 3、求和的整数个位计算结果,添加到结果中;十位为进位值,下一次循环使用。 */ public class BigIntegerAddition { public static void main(String[] args) {//1234634556790123455679011 String s1 = “1234567890123456789012345”; String s2 = “66666666666666666666”; System.out.println(add(s1, s2)); } / * 大整数加法运算 * @param s1 * @param s2 * @return */ public static String add(String s1, String s2) { String result = “”;//结果 int c = 0;//进位值,例如两个个位数相加有进位,那么c表示的就是进位 while(!s1.isEmpty() || !s2.isEmpty()|| c > 0) {//如果两个整数以及进位都为空,那么就结束循环 int num1 = 0;//第一个整数当前位的值,默认为0 if(!s1.isEmpty()) {//如果第一个整数不为空 num1 = Integer.parseInt(s1.substring(s1.length()-1));//获取最后一个字符转换成整数 s1 = s1.substring(0, s1.length()-1);//获取后删除最后一个字符 } int num2 = 0;//第二个整数当前位的值,默认为0 if(!s2.isEmpty()) { num2 = Integer.parseInt(s2.substring(s2.length()-1)); s2 = s2.substring(0, s2.length()-1); } int res = num1 + num2 + c;//计算两个整数当前位及进位的和 result = res % 10 + result;//因为res可能会有进位,所以res可能会是两位数,所以只取个位,所以模10,然后再与之前的结果连接 c = res / 10;//保存进位的结果,在下一次循环时使用。 } return result; } }三. 结束语

在今天这个程序中,我们仅仅使用了String类及Integer类的一些相关方法就实现了两个任意大整数的相加,通过循环,从低位到高位,逐位数字的累加,并将结果存储到一个新字符串中,是不是很简单!后续的文章,我会为大家带来更多、更有趣、更实用的一些案例,请大家持续关注哦!

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:Java教程:任意大整数的相加运算 https://www.dachanpin.com/a/cyfx/11826.html

(0)
上一篇 2023-05-12 03:47:10
如何用控制台打印日历?
下一篇 2023-05-12 03:48:09

相关推荐

  • 成都霸匠五金机电加盟怎么样?助你实现返乡创业梦

    成都霸匠五金机电加盟怎么样?助你实现返乡创业梦 选择霸匠五金机电,实现你自己的财富人生。霸匠五金机电自创建以来,始终坚持打造更受消费者信赖的中国电动工具销售品牌,成就一个全球品牌电动工具的批发销售供货平台。霸匠五金机电在实现自身品牌价值,达成品牌目标的同时,也为广大创业加盟者带来了实现自己财富梦想的机会! 霸匠五金机电工具运营中心坐落于四川成都,汇聚众多精品…

    2023-05-12
    110
  • 28日创业板指跌0.42%

    原标题:28日创业板指跌0.42%   新华社深圳5月28日电(记者赵瑞希)28日创业板指微幅高开后呈现震荡走势,午后逐步回落,最终报收1796.91点,比上个交易日下跌7.64点,跌幅0.42%。当日,创业板成交金额775.8亿元,比上个交易日减少52.6亿元。   创业板当日交易的689只股票中,有471只个股收盘报跌,熙菱信息等9只个股跌停;208只个…

    创业分享 2023-05-17
    152
  • 《国资报告》解读康佳发展路,民族品牌如何在守业中“再创业”?

      站在辞旧迎新的门槛上,回首、展望,思考、畅想,是对历史和未来最起码的尊重。上一个十年是中国民族品牌大浪淘金的时代,在风云诡谲的全球市场竞争之下,乐百氏、娃哈哈、小天鹅、容声等一代行业翘楚纷纷折戟,与此同时,阿里、华为、康佳、联想、海尔等企业在正确的转型战略指导下生机焕发。几家欢喜几家忧的中国民族品牌发展之路,带给我们哪些反思与启示?《国资报告》最近的刊文…

    创业分享 2023-05-12
    189
  • 教你如何造电脑,DIY计算编程套件制造商Kano获2800万美元B轮融资

      Kano在2015年获得1500万美元A轮融资时,消费者还不能在美国的任何一家店铺买到它的产品。但在过去的几年里,它的商品登陆了亚马逊、Toys R Us和Barnes & Noble等平台,同时进入了1000多家美国店面。同时它将在百思买、沃尔玛、Target和Jet.com等平台上进行零售推广。这些扩张行动将让Kano的产品进入4500多家北…

    创业分享 2023-05-21
    129
  • 成功创业经验分享,硅藻泥创业必看

    二、选择顺应趋势,有发展潜力的品牌 天然居作为一个有持续发展能力的品牌绝不会跟在别人背后亦步亦趋。天然居走差异化道路与别的品牌形成市场区隔,让竞争对手无从跟随,最终拥有更强的生命力,更高的市场价值! 硅藻泥行业虽然发展了将近十年,但行业为消费者熟知的知名品牌才能称之为渠道品牌。天然居硅藻泥被评为硅藻泥行业十大品牌,品牌实力强势。为加盟商的支持力度会更大,会更…

    创业分享 2023-06-15
    179

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

工作时间:周一至周五,9:30-16:30,节假日休息