添加两个大数字作为两个数组

时间:2014-01-21 10:47:14

标签: java arrays

所以我必须创建一个方法来添加两个大数字(作为两个数组,其中每个数字是一个不同的字符)。我已经制作了一个代码,但它没有正常工作。有人可以帮我看看吗?

public BigNumber add(BigNumber number2){
    BigNumber x = null;
    char[] m = null;
    long y = 0;
    boolean tmpBool = false;
    boolean leftIsLonger = false;

    if (this.n.length >= number2.n.length){
        m = new char[this.n.length + 1];
        y = number2.n.length;
        leftIsLonger = true;
    }else{
        m = new char[this.n.length + 1];
        y = this.n.length;
    }

    int i;
    for (i = 0; i < y; i++){
        char[] tmp1 = new char[1];
        this.number.getChars(i, i, tmp1, 1);
        int left = Character.getNumericValue(tmp1[0]);

    int j;
    for (j = 0; j < y; j++){
        char[] tmp2 = new char[1];
        this.number.getChars(i, i, tmp2, 1);
        int right = Character.getNumericValue(tmp2[0]);

        int z = left + right;

        if (tmpBool){
            z++;
            tmpBool = false;
        }

        if (z > 9){
            tmpBool = true;
            z = z%10;
        }

        m[i]= (char) z;
    }}

    for (int k = i; k < m.length - 1; k--){
        if (leftIsLonger){
            if (tmpBool){
                int c = Character.getNumericValue(this.n[k]);
                if (c > 9){
                    tmpBool = true;
                    c = c%10;
                    m[k] = (char) (c);
                }else{
                    tmpBool = false;
                    m[k] = (char) (c + 1);
                }
            }else
                m[k] = this.n[k];
        }else{
            if (tmpBool){
                int c = Character.getNumericValue(number2.n[k]);
                if (c > 9){
                    tmpBool = true;
                    c = c%10;
                    m[k] = (char) (c);
                }else{
                    tmpBool = false;
                    m[k] = (char) (c + 1);
                }
            }else
                m[k] = this.n[k];
        }
    }

    return x;
}

1 个答案:

答案 0 :(得分:2)

在开始时,您创建BigNumber x = null,最后返回它。 但在两者之间,我似乎无法找到任何设置的地方? 所以整个功能“优化”到

public BigNumber add(BigNumber number2){
    return null;
}

这就是你所做的,这就是为什么它总是返回null。