|
楼主 |
发表于 2008-6-22 10:08:15
|
显示全部楼层
原帖由 ︶ㄣじ☆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);
}
} |
|