原始人的奔跑 发表于 2008-6-22 10:04:07

编程计算1+1=?

[发帖际遇]: 原始人的奔跑送馒头获得小费现金38思明币


编程计算“1”+“1”=?,那么“100000000000000000000000000000000000000000000001”+“10000000000000000000001”=?,你能完成吗?软件专业的你?

︶ㄣじ☆veJ 发表于 2008-6-22 10:07:21

有个想法把它们转成字符数组 然后相加

原始人的奔跑 发表于 2008-6-22 10:08:15

[发帖际遇]: 原始人的奔跑在大街上捡到现金1000思明币, 飞快的跑回家躲着.


原帖由 ︶ㄣじ☆veJ 于 2008-6-22 10:07 发表 http://172.16.1.236:8080/images/common/back.gif
有个想法把它们转成字符数组 然后相加 写了半个小时我就写:
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;
   int[] in4=new int;
   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=sum/10;
    in3=in3+in3;
   }
   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;
   int[] in4=new int;
   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=sum/10;
    in3=in3+in3;
   }
   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;
//int[] in=new int;
//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;
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);
}
}
页: [1]
查看完整版本: 编程计算1+1=?