黑马程序员技术交流社区

标题: 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 编辑

这是我写的,仅供参考
  1. public class Test1 {
  2.         
  3.         public static void main(String[] args){
  4.           String s1 = "123456789";
  5.           String s2 = "98721";
  6.           String result = add(s1,s2);
  7.           System.out.print(result);
  8.         }
  9.         public static String add(String s1 , String s2){
  10.                 //此处该如何实现
  11.                 if(!s1.matches("[0-9]*?")||!s2.matches("[0-9]*?")) {
  12.                         return "数据格式不正确";
  13.                 }else {
  14.                         int s1len = s1.length();
  15.                         int s2len = s2.length();
  16.                         int len = s1len > s2len ? s1len : s2len;
  17.                         int a1[] = new int[len];
  18.                         int a2[] = new int[len];
  19.                         for(int i=len-1;i>=0;i--) {
  20.                                 if(s2len-1>=0) {
  21.                                         a1[i] = Integer.parseInt(s1.charAt((s1len-1))+"");
  22.                                         s1len--;
  23.                                 }
  24.                         }
  25.                         for(int i=len-1;i>=0;i--) {
  26.                                 if(s2len-1>=0) {
  27.                                         a2[i] = Integer.parseInt(s2.charAt((s2len-1))+"");
  28.                                         s2len--;
  29.                                 }
  30.                         }
  31.                         String result = "";
  32.                         for(int i=len-1;i>=0;i--) {
  33.                                 int j = a1[i] + a2[i];
  34.                            
  35.                                 if(j>=10) {
  36.                                         int jin = j/10;
  37.                                         if(i-1>=0) {
  38.                                                 a1[i-1] = a1[i-1] + jin;
  39.                                                 result = (j-jin*10)+result;
  40.                                         }else result = j+result;
  41.                                        
  42.                                 }else {
  43.                                         result = j+result;
  44.                                 }
  45.                         }
  46.                         return result;
  47.                 }
  48.                
  49.         }
  50. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2