QusayHe

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

这学期新学的java给了我很深的感触,现在谈谈它的便利。

大整数加法想必是我们初学编程都会碰到的一道题。


学C的时候我的解决方案是这样的:

#include<stdio.h>
int main()
{
	int i,q,w,t,e=0;
	q=w=0;
	char a[300],b[300],c[300];
	a[0]=b[0]=c[0]=0;
	for(i=1;;i++)
	{
		scanf("%c",&a[i]);
		if(a[i]=='\n')
			break;
		a[i]=a[i]-48;
		q++;
	}
	for(i=1;;i++)
	{
		scanf("%c",&b[i]);
		if(b[i]=='\n')
			break;
		b[i]=b[i]-48;
		w++;
	}
	if(q>=w)
	{
		t=q;
		while(t>=0)
		{	
			for(i=w;i>=1;i--)
			{
				c[t]=a[t]+b[i];
				if(c[t]>=10)
				{
					a[t-1]+=1;
					c[t]=c[t]%10;
				}
				t--;
				w--;
			}
			c[t]=a[t];
			if(c[t]>=10)
			{
				a[t-1]+=1;
				c[t]=c[t]%10;
			}
			t--;
		}
		if(c[0]==0)
		{
			for(i=1;i<q;i++)
			{
				printf("%d",c[i]);
			}
			printf("%d\n",c[q]);
		}
		else
		{
			for(i=0;i<q;i++)
			{
				printf("%d",c[i]);
			}
			printf("%d\n",c[q]);
		}
	}
	else
	{
		t=w;
		while(t>=0)
		{	
			for(i=q;i>=1;i--)
			{
				c[t]=a[i]+b[t];
				if(c[t]>=10)
				{
					b[t-1]+=1;
					c[t]=c[t]%10;
				}
				t--;
				q--;
			}
			c[t]=b[t];
			if(c[t]>=10)
			{
				b[t-1]+=1;
				c[t]=c[t]%10;
			}
			t--;
		}
		if(c[0]==0)
		{
			for(i=1;i<w;i++)
			{
				printf("%d",c[i]);
			}
			printf("%d\n",c[w]);
		}
		else
		{
			for(i=0;i<w;i++)
			{
				printf("%d",c[i]);
			}
			printf("%d\n",c[w]);
		}
	}
	return 0;
}



			

而java的解决方案是这样的:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	public static String Add(String a, String b) {
		BigInteger big1 = new BigInteger(a);
		BigInteger big2 = new BigInteger(b);
		return big1.add(big2).toString();
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String a, b;
		a = input.nextLine();
		b = input.nextLine();
		System.out.println(Add(a, b));
	}
}

代码的简洁了不少。

posted on 2014-11-19 16:09  QusayHe  阅读(147)  评论(0)    收藏  举报