黑马程序员技术交流社区
标题:
BigInteger的其他实现,求解
[打印本页]
作者:
毕影彬
时间:
2012-10-22 07:29
标题:
BigInteger的其他实现,求解
本帖最后由 毕影彬 于 2012-10-22 17:51 编辑
public static String add(String s1 , String s2){
//此处该如何实现
return "";
}
public static void main(String[] args){
String s1 = "123456789";
String s2 = "987654321";
String result = add(s1,s2);
System.out.print(result);
}
问题:
1.以上程序中,要求将两个字符串整数相加后,返回一个String的结果,如何实现
2.程序中,不能使用BigInteger数据结构,要求自己设计实现
作者:
王威
时间:
2012-10-22 08:34
本帖最后由 王威 于 2012-10-22 08:35 编辑
这是我写的,仅供参考
public class Test1 {
public static void main(String[] args){
String s1 = "123456789";
String s2 = "98721";
String result = add(s1,s2);
System.out.print(result);
}
public static String add(String s1 , String s2){
//此处该如何实现
if(!s1.matches("[0-9]*?")||!s2.matches("[0-9]*?")) {
return "数据格式不正确";
}else {
int s1len = s1.length();
int s2len = s2.length();
int len = s1len > s2len ? s1len : s2len;
int a1[] = new int[len];
int a2[] = new int[len];
for(int i=len-1;i>=0;i--) {
if(s2len-1>=0) {
a1[i] = Integer.parseInt(s1.charAt((s1len-1))+"");
s1len--;
}
}
for(int i=len-1;i>=0;i--) {
if(s2len-1>=0) {
a2[i] = Integer.parseInt(s2.charAt((s2len-1))+"");
s2len--;
}
}
String result = "";
for(int i=len-1;i>=0;i--) {
int j = a1[i] + a2[i];
if(j>=10) {
int jin = j/10;
if(i-1>=0) {
a1[i-1] = a1[i-1] + jin;
result = (j-jin*10)+result;
}else result = j+result;
}else {
result = j+result;
}
}
return result;
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2