Java中的无限整数

时间:2014-10-15 19:07:06

标签: java

我认为我没有以正确的方式接近这一点。我应该创建一个类,允许用户输入任何数字,无论它有多大(当然,由于内存的限制,它并不是无限的)。我有一些代码,但我很确定质量是废话。我似乎遇到了一个字符串最麻烦,并一直在避免它。我只会发布我的工作内容。我只是需要帮助清理它,因为我认为我没有朝着正确的方向前进。这是我的代码到目前为止。我道歉。我不是一个经验丰富的编码员。:

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。我之前在字符串构造函数中创建了一个数组,但它引起了很多悲伤,所以我摆脱了它,只是把它放在第二个构造函数中。

3 个答案:

答案 0 :(得分:4)

您可以使用BigInteger。它使用不同长度的bitarray。

BigInteger上的操作速度较慢,但​​无论编号如何(只要它是整数)都可以。此外,BigInteger操作已经过优化(例如使用特殊的CPU指令)......

如果人们的意思是任何数字,他们有时会表示任何合理的数字。在这种情况下,long的范围在很多情况下是足够的。

答案 1 :(得分:2)

使用Java内置类BigInteger,来自Javadoc BigInteger用于

  

不可变的任意精度整数。

答案 2 :(得分:0)

您要完成的工作已在BigInteger类中完成。在创建更简单的版本时,检查它的源代码可能很有用:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/math/BigInteger.java

相关问题