java实现两个超大数相加,字符串实现
2015-08-29 00:00
429 查看
public class BigDataAdd {
public static String bigDataAdd(String one,String two){
int longflag=one.length()-two.length();
String temp="";
String newone="";
String newtwo="";
if(longflag>0){
temp=one.substring(0,longflag);
newone=one.substring(longflag,one.length());
newtwo=two;
}else{
temp=two.substring(0,-longflag);
newone=one;
newtwo=two.substring(-longflag,two.length());
}
char[] onechararray=newone.toCharArray();
char[] twochararray=newtwo.toCharArray();
StringBuffer addString=new StringBuffer();
boolean flag=false;
for (int i = newone.length()-1; i >=0 ; i--) {
Integer a=new Integer(onechararray[i]+"" );
Integer b=new Integer(twochararray[i]+"") ;
int sum=a+b;
if(flag){
sum+=1;
}
if(sum>=10){
addString.append(sum-10);
flag=true;
}else{
addString.append(sum);
flag=false;
}
}
if(flag){
char [] tempchararray=temp.toCharArray();
StringBuffer addStrPre=new StringBuffer();
boolean flagN=false;
for (int i = temp.length()-1; i >=0; i--) {
int value=new Integer(tempchararray[i]+"");
if(i==temp.length()-1)
value+=1;
if(flagN)
value+=1;
if(value>=10){
flagN=true;
addStrPre.append(value-10);
}else{
flagN=false;
addStrPre.append(temp.charAt(i));
}
}
if(flagN)
addStrPre.append("1");
return addStrPre.reverse().toString()+addString.reverse().toString();
}else {
return temp+addString.reverse().toString();
}
}
public static void main(String[] args) {
String one="139439";
String two="9999999999999999999999283";
System.out.println(BigDataAdd.bigDataAdd(one,two));
}
}
public static String bigDataAdd(String one,String two){
int longflag=one.length()-two.length();
String temp="";
String newone="";
String newtwo="";
if(longflag>0){
temp=one.substring(0,longflag);
newone=one.substring(longflag,one.length());
newtwo=two;
}else{
temp=two.substring(0,-longflag);
newone=one;
newtwo=two.substring(-longflag,two.length());
}
char[] onechararray=newone.toCharArray();
char[] twochararray=newtwo.toCharArray();
StringBuffer addString=new StringBuffer();
boolean flag=false;
for (int i = newone.length()-1; i >=0 ; i--) {
Integer a=new Integer(onechararray[i]+"" );
Integer b=new Integer(twochararray[i]+"") ;
int sum=a+b;
if(flag){
sum+=1;
}
if(sum>=10){
addString.append(sum-10);
flag=true;
}else{
addString.append(sum);
flag=false;
}
}
if(flag){
char [] tempchararray=temp.toCharArray();
StringBuffer addStrPre=new StringBuffer();
boolean flagN=false;
for (int i = temp.length()-1; i >=0; i--) {
int value=new Integer(tempchararray[i]+"");
if(i==temp.length()-1)
value+=1;
if(flagN)
value+=1;
if(value>=10){
flagN=true;
addStrPre.append(value-10);
}else{
flagN=false;
addStrPre.append(temp.charAt(i));
}
}
if(flagN)
addStrPre.append("1");
return addStrPre.reverse().toString()+addString.reverse().toString();
}else {
return temp+addString.reverse().toString();
}
}
public static void main(String[] args) {
String one="139439";
String two="9999999999999999999999283";
System.out.println(BigDataAdd.bigDataAdd(one,two));
}
}
相关文章推荐
- hibernate学习笔记01--在eclipse环境下搭建hibernate框架
- hibernate学习笔记02-- eclipse 下 hibernate+mysql 的实现。
- MyEclipse 为快速开发所做的配置
- java快捷键和注释规范
- Java 流程控制
- Java循环和方法
- 【zZ】RxJava使用心得(一)
- acm hdu p1021 Fibonacci Again java解答 水水 找规律
- java实现一篇文件的重写
- maven中遇到的问题日志
- 使用 Spring Data JPA 简化 JPA 开发
- Java面向对象笔记(一)
- Java虚拟机调优
- java动态代理(AOP)初探
- java web一些入门学习经验
- Java中>> 与 >>> 的区别
- java环境
- java 如何将两个txt文件内容写入到一个txt文件中?
- java中关于堆(heap)和栈(stack)的那点事
- Java,为项目而生