找回密码
 入驻
搜索
查看: 302|回复: 2

编程计算1+1=?

[复制链接]
发表于 2008-6-22 10:04:07 | 显示全部楼层 |阅读模式
[发帖际遇]: 原始人的奔跑送馒头获得小费现金38思明币


编程计算“1”+“1”=?,那么“100000000000000000000000000000000000000000000001”+“10000000000000000000001”=?,你能完成吗?软件专业的你?
发表于 2008-6-22 10:07:21 | 显示全部楼层
有个想法  把它们转成字符数组 然后相加
回复

使用道具 举报

 楼主| 发表于 2008-6-22 10:08:15 | 显示全部楼层
[发帖际遇]: 原始人的奔跑在大街上捡到现金1000思明币, 飞快的跑回家躲着.

原帖由 ︶ㄣじ☆veJ 于 2008-6-22 10:07 发表
有个想法  把它们转成字符数组 然后相加
写了半个小时我就写:
package com.chen.add;
import java.util.*;
public class OAndO {
/**
  * 获得str1 + str2的结果
  * @param str1
  * @param str2
  */
public void getSum(String str1,String str2)
{
  int[] in1=this.intChange(str1);
  int[] in2=this.intChange(str2);
  List<Integer> list1=this.listChange(in1);
  List<Integer> list2=this.listChange(in2);
  System.out.println("数组1:"+list1);
  System.out.println("数组2:"+list2);
  Collections.reverse(list1);
  Collections.reverse(list2);
  System.out.println("数组1"+list1);
  System.out.println("数组2"+list2);
  
  StringBuffer sb=new StringBuffer();
  
  if(list1.size()>=list2.size())
  {
   List<Integer> list3=null;
   int sum=0;
   int[] in3=new int[list1.size()+1];
   int[] in4=new int[list1.size()];
   for(int i=0;i<list2.size();i++)
   {
    in4=list2.get(i);
   }
   System.out.println();
   for(int i=0;i<list2.size();i++)
   {
    sum=list1.get(i)+in4;
    in3=sum%10;
    in3[i+1]=sum/10;
    in3=in3+in3[i+1];
   }
   list3=this.listChange(in3);
   System.out.println("相加后得:"+list3);
   Collections.reverse(list3);
   System.out.println("反转后得:"+list3);
   for(int i=0;i<list3.size();i++)
   {
    sb.append(list3.get(i));
   }
   System.out.println("最后计算为:"+str1+"+"+str2+"="+sb.toString());
  }  
  else
  {
   List<Integer> list3=null;
   int sum=0;
   int[] in3=new int[list2.size()+1];
   int[] in4=new int[list2.size()];
   for(int i=0;i<list1.size();i++)
   {
    in4=list1.get(i);
   }
   System.out.println();
   for(int i=0;i<list2.size();i++)
   {
    sum=list2.get(i)+in4;
    in3=sum%10;
    in3[i+1]=sum/10;
    in3=in3+in3[i+1];
   }
   list3=this.listChange(in3);
   System.out.println("相加后得:"+list3);
//   Collections.reverse(list3);
//   System.out.println("反转后得:"+list3);
   for(int i=0;i<list3.size();i++)
   {
    sb.append(list3.get(i));
   }
   System.out.println("最后计算为:"+str1+"+"+str2+"="+sb.toString());
  }
}
/**
  * 把字符串转化为整形数组
  * @param str
  * @return
  */
// public int[] intChange(String str)
// {
//  
//  String[] s=new String[str.length()];
//  int[] in=new int[s.length];
//  s=str.split("");  
//  for(int i=0;i<str.length();i++)
//  {
//   in=Integer.parseInt(s);
//  }
//  return in;
// }
public int[] intChange(String str)
{
  byte[] b=str.getBytes();
  int[] in=new int[b.length];
  for(int i=0;i<b.length;i++)
  {
   in=b-48;
  }
  return in;
}
public List<Integer> listChange(int[] in)
{
  List<Integer> list=new ArrayList<Integer>();
  for(int i=0;i<in.length;i++)
  {
   list.add(in);
  }
  return list;
}
/**
  * @param args
  */
public static void main(String[] args) {
  OAndO oo=new OAndO();
  oo.getSum("5", "16");
  oo.getSum("19", "5");
//  System.out.println(15/10);
//  System.out.println(15%10);
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入驻

本版积分规则

QQ|Archiver|手机版|小黑屋|思明论坛

GMT+8, 2024-11-22 10:26 , Processed in 0.039429 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表