如何用int数组表示50位整数?

问题描述:

该准则要求如下:如何用int数组表示50位整数?

BigIntegers will be represented with 50 digit arrays of int (where each integer in the array is an integer in the range 0..9). 

You will have a class called BigInteger that has the following methods: 
BigInteger() --- initialize the BigInteger to 0 
BigInteger(int n) --- initialize the BigInteger to the value of n 
BigInteger(BigInteger n) --- a copy constructor 

我的问题是,什么是要对这个最有效的方法是什么?目前,我有:

public class BigInteger { 
    int[] BigInteger = new int[50]; 

    public BigInteger() { 
     for(int i = 0; i < BigInteger.length; i++) { 
      BigInteger[i] = 0; 
     } 
    } 

这似乎是工作,但只适用于数组初始化为0 ....我身边有堆栈溢出检查,但我来了空。有人能指出我如何去做这件事的正确方向吗?

+2

1.如果您的字段不是也称为BigInteger,它可能会更容易。 2.究竟是你面临的问题? “有效”是什么意思?你可能会想要除以10,并采取模块连续数组条目,直到你的整数是0在第二个构造函数中,只是复制数组在第三? –

+0

似乎没有更好的方法,但对于更清晰的代码,最好不要重复使用同名的类和属性,稍后如果读取代码,您将不会快速知道它是哪个代码 – azro

+0

您不需要为零出'int []'。数字数组默认初始化为零。 – Andreas

我不是一个java的家伙,但那又怎么样。

public BigInteger() { 
    for(int i = 0; i < BigInteger.length; i++) { 
     BigInteger[i] = 0; 
    } 
} 

public BigInteger(BigInteger bigInteger) { 
    for(int i = 0; i < BigInteger.length; i++) { 
     BigInteger[i] = bigInteger[i]; 
    } 
} 

public BigInteger(int n) { 
    String nstr = n.toString(); // not sure 
    int pos = 49; 
    for(int i = nstr.length - 1; i >= 0 ; i--) { 
     BigInteger[pos] = Integer.parse(nstr [i]); // parse each char, you get the idea 
     pos--; 
    } 
} 

编辑感谢@Andreas。

+0

这些不是在Java中最有效的方式。此外,它似乎是OP完成的任务,所以我们尽量不要仅仅给出答案。另外,最后一种方法是错误的。 – Andreas

+0

最后一种方法应该是第一种使用n的方法吗?这听起来很容易,但我不知道还有什么可以去做的 – bgb102

+0

@安德里亚斯,他请求帮助,我不是在这里判断他是否值得找到答案。关于我的最后一种方法,你可以编辑或详细说明吗?正如我所说,我不是一个java的家伙。 – dbraillon