您当前的位置:首页 > 互联网教程

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

发布时间:2025-05-24 22:28:59    发布人:远客网络

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

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

import java.io.BufferedReader;

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];

public void setAdd1() throws IOException

System.out.print("请输入第一个长整数:");//输入第一个长整数

BufferedReader in= new BufferedReader(new InputStreamReader(System.in));

for(;i<sLine1.length();i++)

for(i=0;i<add1Max;i++)//len1=add1.length()

if(add1[i]!='\0')

public void setAdd2() throws IOException

System.out.print("请输入第二个长整数:");//输入第二个长整数

BufferedReader in2= new BufferedReader(new InputStreamReader(System.in));

for(i=0;i<sLine2.length();i++)

for(i=0;i<add2Max;i++)//len2=add2.length()

if(add2[i]!='\0')

public void add(char[] add1,char[] add2)//BigInteger相加方法

int len= Math.max(len1,len2);

char[] result= new char[len+1];

temp1[len-1-i]=add1[len1-1-i];

temp2[len-1-i]=add2[len2-1-i];

m=temp1[len-1-i]+temp2[len-1-i];

System.out.print("相加的和为:");//输出相加结果

System.out.print(Integer.toString(result[i]));

public static void main(String[] args) throws IOException//主方法

BigInteger big= new BigInteger();//生成一个BigInteger对象

char[] num1= big.getAdd1();//相加

char[] num2= big.getAdd2();//相减

System.out.println("第一个长整数的长度是:"+ len1);

System.out.println("第二个长整数的长度是:"+ len2);

请输入第一个长整数: 222222222222222222222222222222222222222222555555555555555555555555

请输入第二个长整数: 88888888888888888888888888888888888888899999999999999999999999999

相加的和为:311111111111111111111111111111111111111122555555555555555555555554

二、java int double 加减法 基本类型运算问题

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,计算机能准确表示十进制的整数,但不能准确表示十进制小数。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的结果为0.00000000000...,只不过你的输出结果为double型,精度比较高,没有超出打印函数(println之类的)的默认精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中将((150.00)+0.00+(183.28))作为个运算单元,二个括号内的运算的结果肯定一样,与精度无关。结果当然为0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的结果为0.00000000...,转换成long,舍弃小数位,结果自然为0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F);运算结果为float型,超出打印函数(println之类的)的默认精度,截取下来为0。

三、java语言输出中+ a +是什么意思

java语言输出中+ a+是什么意思?

这是因为 java语言重构了+这个加法字元,当“+”这个字元的左右有一边是字串的时候,这个字元就被从构成了连线符号即"A="+a的输出是A=a的值。若“+”两边全是资料型别的话就是普通的加法运算即 a+b=(a+b的值)。

这是因为 java语言重构了+这个加法字元,当“+”这个字元的左右有一边是字串的时候,这个字元就被从构成了连线符号即"A="+a的输出是A=a的值。若“+”两边全是资料型别的话就是普通的加法运算即 a+b=(a+b的值)。

printf为输出,scanf为输入,%2c输入或输出字元,宽度为2在printf函式中如果输出的超过2个字元还是会按原来的字元如果不足2个字元会补空格。

格式化输出时,format引数中的格式化标志。

%d整数的引数会被转成有符号的十进位制数字

%u整数的引数会被转成无符号的十进位制数字

%o整数的引数会被转成无符号的八进位制数字

%x整数的引数会被转成无符号的十六进位制数字,并以小写 abcdef表示

%X整数的引数会被转成无符号的十六进位制数字,并以大写 ABCDEF表示

%f double型的引数会被转成十进位制数字,并取到小数点以下六位,四舍五入

%e double型的引数以指数形式列印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的 e来表示

%E与%e作用相同,唯一区别是指数部分将以大写的 E来表示

%g double型的引数会自动选择以%f或%e的格式来列印,其标准是根据列印的数值及所设定的有效位数来决定。

%G与%g作用相同,唯一区别在以指数形态列印时会选择%E格式。

%c整型数的引数会被转成 unsigned char型打印出

%s指向字串的引数会被逐字输出,直到出现 NULL字元为止

%p如果是引数是"void*"型指标则使用十六进位制格式显示

输出浮点数,格式为,一共有7位,其中小数4位

在printf可以这样理解*被替换成printf("%*d",number,var);中的number,然后按照printf("%number d"10);来格式化输出资料,看程式码:

printf("000000123450000000\n");

printf("1=%d,2=%*d,3=%d\n",1,5,3,3);

printf("%*d",a,b);其中a作为b的输出宽度控制.其实也就是*的替换功能了,正是由于*的替换功能结合%md的宽度控制,替换之后具体怎么输出的规则就和宽度控制的规则一样了.举个例子: printf("%*d",2,123);输出为:123,相当于%2d输出的效果,因为123位数超过2,故原样输出,且为预设的右对齐.printf("%*2d",1,123);输出应为[9个空格][123],即相当于%12d输出的效果.

java语言是一种简单的,跨平台的,面向物件的,分散式的,解释的,健壮的安全的,结构的中立的,可移植的,效能很优异的多执行绪的,动态的语言。

可能是印几行字,按菱形排列,用行号作为该行的字元。例如:

还有可能是整个菱形用一个数字来填,例如上面是 5行的菱形,全部用5。

%.45g这里的45看上去有点奇怪。理论上,这个数字对g格式来说,表示“输出时的有效数字个数的最大个数”(This is the maximum number of significant digits to be printed.),

这里居然定成 45个,实际上双精度浮点数有效数字最多 14位。编译器会略去.45的要求。

%g是用于浮点数的省略格式,它自动判断用%e或%f格式输出为好,判断标准是:哪个短用哪个,另外它列印时,省去小数部分后面多余的0。例如 1.23000,输出成 1.23.