- 论坛徽章:
- 0
|
昨天面试一道上机题,惨呀,啥也不会,把题分享下吧,
实现一个任意长度的整数加法。比如3000位数该如何计算?
import java.util.Scanner;
public class VeryBigNumAdd {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
VeryBigNumAdd vbn = new VeryBigNumAdd();
Scanner in = new Scanner(System.in);
System.out.println("请输入两个数字:");
String a=in.nextLine();
String b=in.nextLine();
String result = vbn.doAdd(a,b);
System.out.println("result:"+result);
}
String doAdd(String a,String b){
String str="";
int maxLen;
int minLen;
int lenA=a.length();
int lenB=b.length();
if(lenA>lenB){
maxLen=lenA;
minLen=lenB;
}else{
maxLen=lenB;
minLen=lenA;
}
String strTmp="";
for(int i=maxLen-minLen;i>0;i--){
strTmp+="0";
}
//把长度调整到相同的长度
if(maxLen==lenA)
{b=strTmp + b;}
else
a=strTmp + a;
int JW=0;
for(int i=maxLen-1;i>=0;i--)
{
int tempA = Integer.parseInt(String.valueOf(a.charAt(i)));
int tempB = Integer.parseInt(String.valueOf(b.charAt(i)));
int temp;
if(tempA+tempB+JW>=10&&i!=0){
temp=tempA+tempB+JW-10;
JW=1;
}else{
temp=tempA+tempB+JW;
JW=0;
}
str=String.valueOf(temp)+str;
}
return str;
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/92393/showart_1981592.html |
|