我认为我没有以正确的方式接近这一点。我应该创建一个类,允许用户输入任何数字,无论它有多大(当然,由于内存的限制,它并不是无限的)。我有一些代码,但我很确定质量是废话。我似乎遇到了一个字符串最麻烦,并一直在避免它。我只会发布我的工作内容。我只是需要帮助清理它,因为我认为我没有朝着正确的方向前进。这是我的代码到目前为止。我道歉。我不是一个经验丰富的编码员。:
public class InfiniteInteger implements Comparable<InfiniteInteger> {
// TO DO: Instance Variables
public final int BigNumbers;
public final String Infinite;
public final int []integerArray;
public InfiniteInteger(String s) {
// TO DO: Constructor
Infinite=s;
}
public InfiniteInteger(int anInteger) {
// TO DO: Constructor
BigNumbers=anInteger;
integerArray= new int[anInteger];
}
public int getNumberOfDigits() {
// TO DO: return an integer representing the number of digits
of this infinite integer. //
int NumberOfDigits=0;
for(int i=0; NumberOfDigits<0;i++){
}
return BigNumbers;
}
/**
* Checks whether this infinite integer is a negative number.
* @return true if this infinite integer is a negative number.
* Otherwise, return false.
*/
public boolean isNegative() {
// TO DO
if(isNegative()) {
return true;
} else return false;
}
我是否需要在第一个构造函数中将字符串转换为int
。我之前在字符串构造函数中创建了一个数组,但它引起了很多悲伤,所以我摆脱了它,只是把它放在第二个构造函数中。
答案 0 :(得分:4)
您可以使用BigInteger
。它使用不同长度的bitarray。
BigInteger
上的操作速度较慢,但无论编号如何(只要它是整数)都可以。此外,BigInteger
操作已经过优化(例如使用特殊的CPU指令)......
如果人们的意思是任何数字,他们有时会表示任何合理的数字。在这种情况下,long
的范围在很多情况下是足够的。
答案 1 :(得分:2)
使用Java内置类BigInteger
,来自Javadoc BigInteger
用于
不可变的任意精度整数。
答案 2 :(得分:0)
您要完成的工作已在BigInteger类中完成。在创建更简单的版本时,检查它的源代码可能很有用: