使用数组添加大数

时间:2015-05-05 01:40:45

标签: java arrays numbers

我需要使用数组添加两个长度为50的数字。我相信我已经做了正确的转换,但我不知道如何返回要打印的最终总和。我的方法用于添加是否正确?我是否需要返回类型,或者我可以使用它返回任何内容( void )?

import java.util.Scanner;

public class intAdding {

  public static void main(String[] args) {
    String x,y;
    String a[] = new String[50];
    String b[] = new String[50];

    System.out.println("Please enter two numbers with up to 50 digits: ");
    Scanner stdIn = new Scanner(System.in);
    x = stdIn.next();
    y = stdIn.next();

    System.out.println("first number: " + x);
    System.out.println("second number: " + y);

    a[] = stringToIntArray(x);
    a[] = stringToIntArray(y);
    int[] result = new int[51];
    result = null;

    addnum(a, b, result);
    System.out.println(result);

  }
  void addnum(int c[50], int d[50], int sum[51]) {
      int carry=0;
      int temp;
      int i;

      for(i=0; i<=50; i++) {
         temp=c[i]+d[i]+carry;
         sum[i]=temp%10;
         carry=temp/10;
      }
  }

2 个答案:

答案 0 :(得分:3)

一种简单的方法是使用BigInteger。数组逻辑全部由引擎处理:

BigInteger bigX = new BigInteger(x);
BigInteger bigY = new BigInteger(y);

BigInteger sum = bigX.add(bigY);
System.out.println(sum);

答案 1 :(得分:1)

由于数组是引用类型,因此您不必显式返回结果。使用addNum()方法可以void。您必须进行以下更改(删除带结果的空赋值) -

int[] result = new int[51];
addnum(a, b, result);
System.out.println(result);

你必须做出更改 -

b[] = stringToIntArray(y); //instead of a[] = stringToIntArray(y);

但使用java.math.BigInteger的最佳方式。