You must implement your class from first principles; in particular, you may not make use of public class java.math.BigInteger, or public class java.math.BigDecimal, or any other similar device.
You must construct unit tests for all the methods of public class SuperInt; do this before coding the methods themselves. Your class' main method should invoke the unit tests. (To put it another way, the command java SuperInt should run your unit tests.) Try using Java's assert statement.
Make as many of the constructors and methods as possible. Anything that you do not complete must throw an UnsupportedOperationException.
You should try making some applications that use your class. Here are some suggestions:
Make Factorial.java which finds the factorial of any non-negative integer. It might be invoked like this:
java Factorial 9128736405
Make Fibonacci.java which, given a value, n, finds the nth number in the sequence 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... , the sequence whose first number is zero, whose second number is one, and each succeeding number is the sum of the two immediately before it. It might be invoked like this:
java Fibonacci 10000
Make GCD.java which finds the greatest common divisor of any two positive integers. It might be invoked like this:
Don't be misled by appearances: this assignment is much more challenging it looks. The good news is that, for each operation, you already have detailed knowledge of some algorithm. You will discover, however, that expressing them in Java is a whole other thing!
There are alternatives to some of the time-honored algorithms- e.g., Russian Peasants' multiplication- which tend to be easier to program. (You may even come to decide that they are easier to use in practice!) Feel free to implement them, instead of the time-honored techniques.
Similarly, arithmetic is easier in some bases than others- e.g., binary vs. decimal. You should consider this when you decide on an internal representation for your objects.