如何用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 ....我身边有堆栈溢出检查,但我来了空。有人能指出我如何去做这件事的正确方向吗?
答
我不是一个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。
1.如果您的字段不是也称为BigInteger,它可能会更容易。 2.究竟是你面临的问题? “有效”是什么意思?你可能会想要除以10,并采取模块连续数组条目,直到你的整数是0在第二个构造函数中,只是复制数组在第三? –
似乎没有更好的方法,但对于更清晰的代码,最好不要重复使用同名的类和属性,稍后如果读取代码,您将不会快速知道它是哪个代码 – azro
您不需要为零出'int []'。数字数组默认初始化为零。 – Andreas