java实现大整数的四则运算

import java.util.Random;
import java.util.Scanner;
public class w
{
public static void main(String[] args)
{
Scanner leng=new Scanner(System.in);
System.out.println("please enter a's length: ");
int alength=leng.nextInt();
System.out.println("please enter b's length: ");
int blength=leng.nextInt();
int almlength=min(alength,blength);
int alalength=max(alength,blength);
Random r=new Random();
int[] a=new int[alalength];
int[] b=new int[alalength];
char[] c={'+','-','*','/'};
int[] ares=new int[alalength+1];
int[] bres=new int[alalength];
int[] cres=new int[2*alalength];
int[] dres=new int[alalength];
a[alalength-alength]=r.nextInt(9)+1;
b[alalength-blength]=r.nextInt(9)+1;
for(int i=alalength-alength+1;i<alalength;i++)
{
a[i]=r.nextInt(10);


}
for(int i=alalength-blength+1;i<alalength;i++)
{
b[i]=r.nextInt(10);
}
for(int i=alalength-alength;i<alalength;i++)
{
System.out.print(a[i]);
}
int dom=r.nextInt(4);
System.out.print(c[dom]);
for(int i=alalength-blength;i<alalength;i++)
{
System.out.print(b[i]);
}//定义算式
switch(dom)
{
case 0://add                
                  for(int i=alalength-1;i>=0;i--)
                  {
                  ares[i+1]=a[i]+b[i]+ares[i+1];//d10->1 a b 9->0;
                  if(ares[i+1]>9)
                  {
                  ares[i]+=1;
                  ares[i+1]%=10;
                  }
                  }
                  System.out.print('=');
                  if(ares[0]==0)
                  {
                  for(int i=1;i<alalength+1;i++)
                   System.out.print(ares[i]);
                  }
                  else
                  {
                  for(int i=0;i<alalength+1;i++)
                   System.out.print(ares[i]);
                  }
                  break;
                  
            case 1:
              int com = 0;
            if(alength<blength)
            {
            com=0;
            }
            if(alength>blength)
            com=1;
            if(alength==blength)
            {
            int i;
            for( i=0;i<alength;i++)
            {
               if(a[i]<b[i])
               {
                 com=0;
                 break;
            }
            if(a[i]>b[i])
            {
            com=1;
            break;
            }
            }
            if(i==alength)
            com=1;
            }
            switch(com)
            {
              case 0:
              for(int i=alalength-1;i>=0;i--)
                      {
                      bres[i]=b[i]-a[i]+bres[i];
                      if(bres[i]<0)
                      {
                      bres[i]+=10;
                      bres[i-1]-=1;
                      }
                      }
                      System.out.print('=');
                      System.out.print('-');
                      int flag=0;
                      for(flag=0;flag<alalength;flag++)
                      {
                      if(bres[flag]!=0)
                      break;
                      }
                      for(int i=flag;i<alalength;i++)
                       {
                      System.out.print(bres[i]);
                       }
                      break;
              case 1:
            for(int i=alalength-1;i>=0;i--)
                    {
                    bres[i]=a[i]-b[i]+bres[i];
                    if(bres[i]<0)
                    {
                    bres[i]+=10;
                    bres[i-1]-=1;
                    }
                    }
                    System.out.print('=');
                    int flagg=0;
                    for(flagg=0;flagg<alalength;flagg++)
                    {
                    if(bres[flagg]!=0)
                    break;
                    }
                    for(int i=flagg;i<alalength;i++)
                     {
                    System.out.print(bres[i]);
                     }
                    break;
            }                   
                break;
            case 2:
            for(int i=alalength-1;i>=alalength-alength;i--)
                {
                for(int j=alalength-1;j>=alalength-blength;j--)
                {
                cres[i+j+1]=a[i]*b[j]+cres[i+j+1];
                }
                }
            for(int i=2*alalength-1;i>=0;i--)
            {
            if(cres[i]>9)
            {
            cres[i-1]+=cres[i]/10;
            cres[i]%=10;
           
            }
                System.out.print('=');
                int k=0;
                while(cres[k++]==0);
               
                for(int i=k-1;i<2*alalength;i++)
                System.out.print(cres[i]);               
                break;
            case 3:
            int k1=alalength;
            while(1==1)
           {
            for(int i=alalength-1;i>=0;i--)
                {
                bres[i]=a[i]-b[i]+bres[i];
                if(bres[i]<0&&i!=0)
                {
                bres[i]+=10;
                bres[i-1]-=1;
                }
                }            
            for(k1=0;k1<alalength;k1++)
            {
            if(bres[k1]<0)
            break;
            }
            if(k1!=alalength)
            break;
            dres[alalength-1]++;
            for(int q=alalength-1;q>0;q--)
            {
            if(dres[q]>9)
            {
            dres[q-1]+=1;
            dres[q]%=10;
            }
            }
            for(int j=0;j<alalength;j++)
            {
            a[j]=bres[j];
            bres[j]=0;         
            }          
           }
                System.out.print('=');
                int dr=0;
                while(dres[dr++]==0);
                for(int ll=dr-1;ll<alalength;ll++)
                {
                System.out.print(dres[ll]);
                }
                System.out.print("...");
                int k2=0;
                while(a[k2++]==0);
               
                for(int i=k2-1;i<alength;i++)
                System.out.print(a[i]);            
            break;
        }
}
public static int max(int a,int b)
{
if (a>=b)
return a;
else
return b;
}
public static int min(int a,int b)
{
if (a<=b)
return a;
else
return b;
}
}
/*实现大整数的四则运算
大整数按位存储在数组里面
每位上的数随机产生
运算符随机产生
结果验证
输出程序的中间过程与结果*/
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值