JAVA比C/C++实现大数相加要容易得多,因为JAVA中有现成的封装好的类可以使用
package compare;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/**
* 大数相加
* @author HANS
*/
public class LagerNumber {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
ArrayList<Integer> list1 = getList(sc.next());
System.out.println("请输入第二个数:");
ArrayList<Integer> list2 = getList(sc.next());
//反转数组,方便相加
Collections.reverse(list1);
Collections.reverse(list2);
ArrayList<Integer> sum = new ArrayList<Integer>();//接受结果
ArrayList<Integer> max = getMax(list1, list2);
ArrayList<Integer> min = getMin(list1, list2);
int s = 0;
for (int i = 0; i < max.size(); i++) {
if(i < min.size()){
s = list1.get(i) + list2.get(i) + s;
}else {
s = max.get(i) + s;
}
sum.add(s % 10);
s = s / 10;
}
//最后如果进位则添加到结果集中
if(s != 0){
sum.add(s);
}
Collections.reverse(sum);
System.out.println("两个数相加之和为:"+sum.toString().replace(",", "").replace(" ", ""));
// List<Character> list = new ArrayList<Character>(Arrays.asList('1','2'));
// System.out.println(list);
}
//转换成整数集合
static ArrayList<Integer> getList(String number){
ArrayList<Integer> list = new ArrayList<Integer>();
char[] chars = number.toCharArray();
for (Character c : chars) {
int n = Integer.parseInt(c.toString());//将字符转化成整数
list.add(n);
}
return list;
}
//得到大数集合
static ArrayList<Integer> getMax(ArrayList<Integer> list1,ArrayList<Integer> list2)
{
return list1.size() > list2.size() ? list1 :list2;
}
//得到小数集合
static ArrayList<Integer> getMin(ArrayList<Integer> list1,ArrayList<Integer> list2)
{
return list1.size() <= list2.size() ? list1 :list2;
}
}