Java中的无限整数

Java中的无限整数,java,Java,我认为我的方法不对。我应该创建一个类,允许用户输入任何数字,不管它有多大(当然,由于内存的限制,它不是无限的)。我有一些代码,但我很确定质量是垃圾。我似乎在使用字符串时遇到了最大的麻烦,并且一直在避免使用它。我将只发布我所做的工作。我只是需要帮忙清理一下,因为我觉得我走的方向不对。以下是我的代码到目前为止的内容。我道歉。我不是一个经验丰富的程序员 public class InfiniteInteger implements Comparable<InfiniteInteger> {

我认为我的方法不对。我应该创建一个类,允许用户输入任何数字,不管它有多大(当然,由于内存的限制,它不是无限的)。我有一些代码,但我很确定质量是垃圾。我似乎在使用字符串时遇到了最大的麻烦,并且一直在避免使用它。我将只发布我所做的工作。我只是需要帮忙清理一下,因为我觉得我走的方向不对。以下是我的代码到目前为止的内容。我道歉。我不是一个经验丰富的程序员

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;
   }
公共类InfiniteInteger实现可比较{
//要做的事情:实例变量
公共最终整数;
公共最终字符串无限;
公共最终整数[]整数数组;
公共无限整数(字符串s){
//要做的事情:构造函数
无限=s;
}
公共无限积分(整数){
//要做的事情:构造函数
大数=整数;
整数数组=新整数[整数];
}
public int getNumberOfDigits(){
//要执行的操作:返回一个表示位数的整数
这个无穷大的整数//
int NumberOfDigits=0;

对于(int i=0;NumberOfDigits,您可以使用
biginger
来实现此目的。它使用长度可变的位数组

biginger
的操作速度较慢,但无论数字是多少(只要它是整数),都可以工作。此外,
biginger
操作得到优化(例如使用特殊的CPU指令)


在旁注中,如果人们指的是任何数字,他们有时指的是任何合理的数字。在这种情况下,
long
的范围在很多情况下都是足够的。

你可以使用
biginger
来实现这一点。它使用长度可变的位数组

biginger
的操作速度较慢,但无论数字是多少(只要它是整数),都可以工作。此外,
biginger
操作得到优化(例如使用特殊的CPU指令)


在旁注中,如果人们指的是任何数字,他们有时指的是任何合理的数字。在这种情况下,
long
的范围在很多情况下是足够的。

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

不可变的任意精度整数


使用Java内置类,来自Javadoc
biginger

不可变的任意精度整数


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


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



已经有一个类型可以满足您的需要。请改用
biginger
。您的
是负的
方法将永远无法工作,因为您在自己的方法中调用该方法时没有stopcondition…导致无限递归re,“受内存限制,它实际上不是无限的”:使用高端PC,您应该能够处理比一个人一生中在计算机中输入的数字更大的数字。已经有一种类型可以满足您的需要。请改用
biginger
。您的
为负
方法将永远无法工作,因为您在自己的方法中调用该方法时没有停止条件…结果是n infinite recursionRe,“受内存限制,它不是真正的无限”:对于高端PC,你应该能够处理比一个人一生中在计算机中输入的数字更大的数字。这并不能回答问题。问题的答案是“不,你永远不会使用这样的字符串。”@MikkelLøkke在我听来很像。@MikkelLøkke我在OP的帖子中没有看到问号,所以从技术上讲没有问题^^^@ElliottFrisch从我所看到的内容来看,它不会将一个字符串转换成一个整数,其中包含一个可能大于Integer.MAXVALUE的数字。这就是我对“问题”的理解。如果您自制的
biginger
使用了
String
表示,但仍然局限于基本
int
的限制,那么一旦您需要它来进行任何类型的算术,使用
String
表示临时值是毫无意义和冗余的。@MikkelLøkke是的,但如果您使用Oracle的
biginger
你可以用一个
字符串来构造它。我想这就是OP试图做的。这并不能回答问题。问题的答案是“不,你永远不会使用这样的字符串。”@MikkelLøkke在我听来很像。@MikkelLøkke我在OP的帖子中没有看到问号,所以从技术上讲没有问题^^^@ElliottFrisch从我所看到的内容来看,它不会将一个字符串转换成一个整数,其中包含一个可能大于Integer.MAXVALUE的数字。这就是我对“问题”的理解。如果您自制的
biginger
使用了
String
表示,但仍然局限于基本
int
的限制,那么一旦您需要它来进行任何类型的算术,使用
String
表示临时值是毫无意义和冗余的。@MikkelLøkke是的,但如果您使用Oracle的
biginger
你可以用一个
字符串来构造它OP试图做什么。我不允许导入java.math。除非我不必导入?是的。我们可以使用数组,但不允许导入列表、包或任何数据结构。我不允许导入java.math。除非我不必导入?是的。我们可以使用数组,但不允许导入列表、包或任何数据结构。是的,如果允许我为我导入java.math,这将非常有用但我不能。除非我不需要?…导入任何要使用BigInteger的东西?是的,如果允许我为它导入java.math,这将非常有用,但我不能。除非我不需要