`
baiguomeng
  • 浏览: 956712 次
文章分类
社区版块
存档分类
最新评论

一个实现长整型数相加减的小程序

 
阅读更多

//联合国科教文组织要统计人口,显然一般的int不能满足需要,因此要求定义一个BigInteger的新类,
//多写孔乙己提醒,那是我初学Java时写的,实在不该帖出来,现在重写了代码.

//时间关系,只实现了加法.

BigIntegerTest.java

/***//**
*
@authorRey
*@date2006-10-2
*/

publicclassBigIntegerTestextendsTestCase...{
publicvoidtest1()...{
BigIntegerb1
=newBigInteger("11");
BigIntegerb2
=newBigInteger("11");
BigIntegerb3
=newBigInteger("2");
assertEquals(b1,b2);
assertFalse(b1.equals(b3));
}


publicvoidtest2()...{
BigIntegerb1
=newBigInteger("12");
BigIntegerb2
=newBigInteger("8");
BigIntegerb3
=b1.add(b2);
assertEquals(
newBigInteger("20"),b3);
}


publicvoidtest3()...{
BigIntegerb1
=newBigInteger("99");
BigIntegerb2
=newBigInteger("99");
assertEquals(
newBigInteger("198"),b1.add(b2));
}


publicvoidtest4()...{
BigIntegerb1
=newBigInteger("9999999999999999");
BigIntegerb2
=newBigInteger("1");
assertEquals(
newBigInteger("10000000000000000"),b1.add(b2));
}


publicvoidtest5()...{
BigIntegerb1
=newBigInteger("1");
BigIntegerb2
=newBigInteger("9999999999999999");
assertEquals(
newBigInteger("10000000000000000"),b1.add(b2));
}

}

BigInteger.java

/***//**
*
@authorRey
*@date2006-10-2
*
*/

publicclassBigInteger...{

privateStringvalue=null;

publicBigInteger(Stringvalue)...{
this.value=value;
}


publicBigIntegeradd(BigIntegerb2)...{

char[]a=value.toCharArray();
char[]b=b2.value.toCharArray();

/***//**把最长的放到a里面*/
if(a.length<b.length)...{
char[]temp=null;
temp
=a;
a
=b;
b
=temp;
}


intsize=a.length+1;
char[]result=newchar[size];
intj=result.length-1;
/***//**把barray的值copy到result中,前面空位补48*/
for(inti=b.length-1;i>=0;i--,j--)...{
result[j]
=b[i];
}

for(;j>=0;j--)...{
result[j]
=48;
}



/***//**result=a+result*/
for(inti=a.length-1,sum=0;i>=0;i--)...{
sum
=a[i]+result[i+1];
if(sum>=106)...{
result[i
+1]=(char)(sum-10-48);
result[i]
++;
}
else...{
result[i
+1]=(char)(sum-48);
}

}


/***//**char[]转化为Stringvalue*/
StringBuffersb
=newStringBuffer();
for(inti=0;i<result.length;i++)...{
if(i==0&&(int)result[i]==48)
continue;
sb.append((
char)result[i]);
}

returnnewBigInteger(sb.toString());
}


@Override
publicinthashCode()...{
finalintPRIME=31;
intresult=1;
result
=PRIME*result+((value==null)?0:value.hashCode());
returnresult;
}


@Override
publicbooleanequals(Objectobj)...{
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!=obj.getClass())
returnfalse;
finalBigIntegerother=(BigInteger)obj;
if(value==null)...{
if(other.value!=null)
returnfalse;
}
elseif(!value.equals(other.value))
returnfalse;
returntrue;
}


@Override
publicStringtoString()...{
returnvalue;
}


}


分享到:
评论

相关推荐

    c程序 两个大型整数相加

    两个超出长整型范围的整数相加 c语言 小程序

    java 经典习题.doc

    1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和...

    动态申请空间实现矩阵加减法

    (5) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7) 动态申请三个矩阵:A1、A2、A3; (8) 初始化A1...

    矩阵加减运算

    //(4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; //(5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; //(6) 定义三个矩阵:A1、A2、A3; //(7) 初始...

    C++代码实现计算两个数的和并输出结果,还展示函数定义和调用的基本语法

    这段代码展示了以下几个C++的语法和概念: 包含头文件:使用#include 包含头文件iostream,使得可以使用标准输入...以上代码实现了一个简单的功能,计算两个数的和并输出结果,同时还展示了函数定义和调用的基本语法。

    面向对象程序设计(c++)

    (5) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7) 动态申请三个矩阵:A1、A2、A3; (8) 初始化 ...

    矩阵(一)

    (4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (6) 定义三个矩阵:A1、A2、A3; (7) 初始化A1、A2...

    C++ 矩阵加减法

    (4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (6) 定义三个矩阵:A1、A2、A3; (7) 初始化A1、A2...

    C语言程序设计标准教程

    如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。例如: 十进制长整常数 158L (十进制为158) 358000L (十进制为-358000) 八进制长整常数 012L (十进制为10) 077L (十...

    Java经典编程题(附答案)

    1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    2.4 怎样表示一个算法 24 2.4.1 用自然语言表示算法 24 2.4.2 用流程图表示算法 24 2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    2.4 怎样表示一个算法 24 2.4.1 用自然语言表示算法 24 2.4.2 用流程图表示算法 24 2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 ...

    最新JAVA编程题全集_50题及答案

    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=...

    数据结构(C++)有关练习题

    c. 该程序要有顾客购票,查询班机起飞降落时间,班机订票情况等3个功能,并实现菜单选项 5、 用C++编写一个简单的行编辑器,每个结点保存一行文本,程序以E file开始,然后显示行数和提示符,如果输入I,后面...

    【c语言课程设计】基于单链表和结构体的学生奖学金评定系统

    编写C程序,实现以下功能: 1)每名学生信息包括:学号(8个字符)、姓名(最多20个字符)、5门课程成绩(整型)、总成绩(整型)。 2)声明结构体类型用以保存学生信息。 3)从键盘读入全班同学的信息(不超过50人,总...

    java经典面试2010集锦100题(不看你后悔)

    A) 程序运行到第6行会出现编译错误,因为c为char类型,不能把一个汉字赋给一个字符型。 B) 程序运行到第7行会出现编译错误,因为字符型与整型不能进行加法运算。 C) 程序能够正常编译和运行,但是不会输出任何结果。...

    大整数乘法

    cout输入第一个大数:"; cin&gt;&gt;a; cout输入第二个大数:"; cin&gt;&gt;b; while(1) { cout(1:加法 2:减法 3:比较 4:乘法 5:除法 6:求余)请选择:"; cin&gt;&gt;g; x=strlen(a); y=strlen(b); if(a[0]=='-' && b[0]=='-'...

Global site tag (gtag.js) - Google Analytics