问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用Java编写 任意长的整数加法

发布网友 发布时间:2022-05-16 19:41

我来回答

1个回答

热心网友 时间:2024-03-01 01:30

这个程序也许能满足你的要求:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BigInteger//定义长整型的类
{
private static final int add1Max=1000;//可计算最长位数
private static final int add2Max=1000;//同上
private char[] add1 = new char[add1Max];
private char[] add2 = new char[add1Max];
private int len1;
private int len2;
public void setAdd1() throws IOException
{
int i=0;
String sLine1;
System.out.print("请输入第一个长整数: ");//输入第一个长整数
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
sLine1=in.readLine();
for(;i<sLine1.length();i++)
add1[i]=sLine1.charAt(i);

for(i=0;i<add1Max;i++)//len1=add1.length()
{
if(add1[i]!='\0')
len1++;
}
}
public void setAdd2() throws IOException
{
int i=0;
String sLine2;
System.out.print("请输入第二个长整数 : ");//输入第二个长整数
BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));
sLine2 = in2.readLine();
for(i=0;i<sLine2.length();i++)
add2[i]=sLine2.charAt(i);

for(i=0;i<add2Max;i++)//len2=add2.length()
{
if(add2[i]!='\0')
len2++;
}
}
public char[] getAdd1()
{
return add1;
}
public char[] getAdd2()
{
return add2;
}
public int getLen1()
{
return len1;
}
public int getLen2()
{
return len2;
}
public void add(char[] add1,char[] add2)//BigInteger相加方法
{
int len = Math.max(len1,len2);
int i;
char[] temp1 = new char[len];
char[] temp2 = new char[len];
char[] result = new char[len+1];

for(i=0;i<len1;i++)
temp1[len-1-i]=add1[len1-1-i];
for(i=0;i<len2;i++)
temp2[len-1-i]=add2[len2-1-i];

int m=0;
for(i=0;i<len;i++)//相加
{
if(temp1[len-1-i]!=0)
temp1[len-1-i]-=48;
if(temp2[len-1-i]!=0)
temp2[len-1-i]-=48;
m=temp1[len-1-i]+temp2[len-1-i];
if(m>=10)
{
m-=10;
result[len-i]+=m;
result[len-1-i]+=1;
}
else result[len-i]+=m;
}

System.out.print("相加的和为:");//输出相加结果
i=0;
if(result[0]==0)
i=1;
for(;i<len+1;i++)
System.out.print(Integer.toString(result[i]));
}

public static void main(String[] args) throws IOException//主方法
{
BigInteger big = new BigInteger();//生成一个BigInteger对象
big.setAdd1();//得到数1
big.setAdd2();//得到数2
char[] num1 = big.getAdd1();//相加
char[] num2 = big.getAdd2();//相减
int len1 = big.getLen1();
int len2 = big.getLen2();
System.out.println();
System.out.println("第一个长整数的长度是: " + len1);
System.out.println("第二个长整数的长度是: " + len2);
big.add(num1,num2);
System.out.println();

}
}

运行结果如下:

请输入第一个长整数: 222222222222222222222222222222222222222222555555555555555555555555
请输入第二个长整数 : 88888888888888888888888888888888888888899999999999999999999999999

第一个长整数的长度是: 66
第二个长整数的长度是: 65
相加的和为:311111111111111111111111111111111111111122555555555555555555555554追问如果要实现每四位一组要怎么弄啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
厦门有哪些建材店 六年级的我们会想些什么 为什么我没用平安信用卡里面的钱工作人员还说我有欠款没还? 抖音直播间粉丝等级怎么算的呀? ...不记得,只知道大概是那里人,精确查找还可以找到吗 几年前我被好友拖到黑名单 怎么找回她的qq号 微信好友被删了,还可以找回来吗,号码什么都不记得了, 家里的座机和手机绑定,中途可不可以换个手机号绑定?老号想注销!!_百 ... 我的手机卡是和固定电话捆绑的,一个月前手机丢了,今天交话费才知捡到... 移动机卡绑定问题 Java的加减乘除问题 JAVA中实现计算加法的功能 JAVA中不用+ 如何实现加法 java 1到100加法 java数组加法 Java 加法计算问题 java里的加法运算符问题 怎么用java写加法 加法的Java 中的加法 IP各数字什么意思?如58.295.273.125.18821 假如你是李明,你想去动物园,但是外面正在下雪,你不能去了,你很难过.写一篇英语作文? “我送你去动物园”与“我带你去动物园”意思一样吗? 你要去动物园吗?用英语怎么说 你第一次去动物园是什么感受? 本周五,学校组织同学们去动物园春游。学校要求大家尽量参加,如果是你你会怎么? 假如你是汤姆今天去要你去动物园玩请描述一下今天的活动,五十词 李小龙的英文名字 书面表达英语作文假如周末你去了动物园,请将你在动物园里看到的动物及它们会做的事情描述一番吧!不少 我名字叫李星英文怎么写李用英文是不是Le 过年为什么要吃饺子 放爆竹 贴春联! 你好,我有些java的问题想问你,如何用java进行加法的运算,就是3=1+2, 6=1+2+3这样的 Java 加法浮点运算 java 加法 乘法问题 水中碱度测定仪厂家哪家好? 氯气在线含水分析仪哪家的使用效果好?国产的是哪家 在word中,如何设置:将一段文字链接到&quot;text_picture.doc 在word文档中,我想在第一段文字中插入超链接,链接名为种类的书签, 喝酒的情况说明 人参大补酒的说明 酱香型白酒的工艺说明 宿舍喝酒说明书,500字 word文档中怎么点击目录就能链接到文字 保健酒和药酒的区别与禁忌 说明书宫廷玉液可以放酒里面吗? 为什么15岁小女孩竟胸大如足球 小女孩胸大严重下垂是甚么缘由 十二岁小女孩胸陪发育很大.而且上面很多红丝.胸有点下垂.请问是不是发育不正常 我认识一个十五岁小女孩,长的一米六六,身材超好,胸也很大正常吗 小女孩13.14岁胸大好不好 小女孩六个月大,感觉*有点大,身高60cm,体重13斤,也不是胖呀,这是怎么了呀!