用Java编写 任意长的整数加法
发布时间:2025-05-24 22:28:59 发布人:远客网络
一、用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.