编写用数组实现不超过200位的大整…

来源:互联网 发布:柯达i1220扫描仪软件 编辑:程序博客网 时间:2024/06/03 18:29

class BigInt {
 final int L = 200;
 byte a[] = new byte[L], b[] = new byte[L], c[] =new byte[L];
 int an, bn;

 BigInt() {
 };

 BigInt(String aa, String bb) {
  Stringtobyte(aa, bb);
 };

 void Stringtobyte(String aa, String bb){
  System.out.print(aa + "+" + bb+ "=");
  an = aa.length();
  bn = bb.length();
  byte tempa[] =aa.getBytes();
  byte tempb[] =bb.getBytes();
  int i;
  for (i = an - 1; i >= 0;i--) {
   a[an - 1 - i]= tempa[i];
  }
  for (i = an; i < L;i++)
   a[i] ='0';
  for (i = bn - 1; i >= 0;i--)
   b[bn - 1 - i]= tempb[i];
  for (i = bn; i < L;i++)
   b[i] ='0';
 }

 void add(String aa, String bb) {
  Stringtobyte(aa, bb);
  add();
 }

 void add() {
  int i, x, y, z;
  for (i = 0; i < L;i++)
   c[i] ='0';
  for (i = 0; i < L; i++){
   x = (a[i] -48);
   y = (b[i] -48);
   z = x + y +(c[i] - 48);
   if (z >9)
    c[i+ 1] = '1';
   c[i] = (byte)(z % 10 + 48);
  }
  i = L - 1;
  while (c[i] == '0')
   i--;
  for (; i >= 0; i--)
  System.out.print((char)c[i]);
  System.out.println('\n');
 }
public static void main(String[] args) {
 (new BigInt("9999","8888")).add();
 (new BigInt()).add("99999999","888888888888888888");
}
}

阅读全文
0 0
原创粉丝点击