list2 = list_temp;
flag = true;
}else if(list1.size() == list2.size()){
for(int i = list1.size() - 1;i >= 0;-- i){
if(list1.get(i) > list2.get(i)){
flag = true;
break;
}
}
if(!flag){
list_temp = list1;
list1 = list2;
list2 = list_temp;
flag = true;
}else{
flag = false;
}
}
n = 0;
int j = 0;
int m = 0;
it1 = list1.iterator();
it2 = list2.iterator();
//System.out.println(list1);
//System.out.println(list2);
while(it1.hasNext()||it2.hasNext()){
if(it1.hasNext()){
n = it1.next() + m;
j ++;
}
if(it2.hasNext()){
int temp = it2.next();
if(n >= temp){
n -= temp;
m = 0;
}else{
n = n + 10000 - temp;
m = -1;
}
}
if(n < 0){
n += 10000;
m = -1;
}
if(n != 0 || j != list1.size())
list3.add(n);
}
break;
case '+':
n = 0;
it1 = list1.iterator();
while(it1.hasNext()||it2.hasNext()){
if(it1.hasNext()){
n += it1.next();
}
if(it2.hasNext()){
n += it2.next();
}
list3.add(n % 10000);
n /= 10000;
}
if(n != 0){
list3.add(n);
}
break;
default:
break;
}
int p = 0;
//System.out.println(list3);
if(list3.size() == 0){
list3.add(0);
}
for(int i = list3.size() - 1;i >= 0;-- i)
if(list3.get(i) != 0){
p = i;
break;
}
n = list3.get(p);
switch(kind){
case 1:
//System.out.println(flag);
if(!flag){
System.out.printf("%d",-n);
}else{
System.out.printf("%d",n);
}
break;
case 2:
System.out.print("-");
System.out.printf("%d",list3.get(p));
break;
case 3:
System.out.printf("%d",list3.get(p));
break;
}
for(int i = p - 1;i >= 0;-- i)
System.out.printf(" %04d",list3.get(i));
System.out.println();
}
}
摘自:冰非寒