这学期新学的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));
}
}代码的简洁了不少。

浙公网安备 33010602011771号