Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Here is my Code: package HugeIntTest; class HugeInteger { private final int DIGI

ID: 3890691 • Letter: H

Question

Here is my Code:

package HugeIntTest;

class HugeInteger {

private final int DIGITS = 40;

private int[] integer;

private boolean positive;

public HugeInteger()

{

integer = new int[ DIGITS ];

positive = true;

}

public void input( String inputString )

{

char[] integerChar = inputString.toCharArray();

if ( integerChar[ 0 ] == '-' )

positive = false;

if ( positive )

integer[ DIGITS - integerChar.length ] =

( int )integerChar[ 0 ] - ( int )'0';

for ( int i = 1; i < integerChar.length; i++ )

integer[ DIGITS - integerChar.length + i ] =

( int )integerChar[ i ] - ( int )'0';

}

public HugeInteger add( HugeInteger addValue )

{

HugeInteger temp = new HugeInteger();

if ( ( positive && addValue.positive ) ||

!( positive || addValue.positive ) )

temp = addPositives( addValue );

else if ( positive && ( !addValue.positive ) ) {

addValue.positive = true;

if ( isGreatThan( addValue ) )

temp = subtractPositives( addValue );

else {

temp = addValue.subtractPositives( this );

temp.positive = false;

}

addValue.positive = false;

}

else if ( !positive && addValue.positive ) {

addValue.positive = false;

if ( isGreatThan( addValue ) )

temp = addValue.subtractPositives( this );

else {

temp = subtractPositives( addValue );

temp.positive = false;

}

addValue.positive = true;

}

return temp;

}

public HugeInteger addPositives( HugeInteger addValue )

{

HugeInteger temp = new HugeInteger();

int carry = 0;

for ( int i = 39; i >= 0; i-- ) {

temp.integer[ i ] =

integer[ i ] + addValue.integer[ i ] + carry;

if ( temp.integer[ i ] > 9 ) {

temp.integer[ i ] %= 10;

carry = 1;

}

else

carry = 0;

}

if ( !positive )

temp.positive = false;

return temp;

}

public HugeInteger subtract( HugeInteger subtractValue )

{

HugeInteger temp = new HugeInteger();

if ( positive && ( !subtractValue.positive ) )

temp = addPositives( subtractValue );

else if ( !positive && subtractValue.positive ) {

temp = addPositives( subtractValue );

}

if ( positive && subtractValue.positive )

temp = subtractPositives( subtractValue );

if ( !( positive || subtractValue.positive ) )

temp = subtractValue.subtractPositives( this );

return temp;

}

public HugeInteger subtractPositives( HugeInteger subtractValue )

{

int borrow = 0;

HugeInteger temp = new HugeInteger();

for ( int i = 39; i >= 0; i-- ) {

if ( integer[i] < subtractValue.integer[ i ] ){

temp.integer[ i ] = ( integer[ i ] + 10 ) -

subtractValue.integer[ i ] - borrow;

borrow = 1;

}

else {

temp.integer[ i ] =

integer[ i ] - subtractValue.integer[ i ] - borrow;

borrow = 0;

}

}

return temp;

}

public int findFirstNonZeroPosition()

{

int position = 39;

for ( int i = 0; i < DIGITS; i++ ) {

if ( integer[ i ] > 0 ) {

position = i;

break;

}

}

return position;

}

public String toHugeIntegerString()

{

String sign = " ", output = " ";

if ( !positive )

sign = "-";

for ( int i = findFirstNonZeroPosition(); i < DIGITS; i++ )

output += integer[ i ];

return sign + output;

}

public boolean isEqualTo( HugeInteger compareValue )

{

for ( int i = 0; i < DIGITS; i++ ) {

if ( integer[ i ] != compareValue.integer[ i ] )

return false;

}

if ( ( positive && compareValue.positive ) ||

!( positive || compareValue.positive ) )

return true;

else

return false;

}

public boolean isNotEqualTo( HugeInteger compareValue )

{

return !isEqualTo( compareValue );

}

public boolean isGreatThan( HugeInteger compareValue )

{

if ( positive && ( !compareValue.positive ) )

return true;

else if ( !positive && compareValue.positive )

return false;

else {

if ( findFirstNonZeroPosition() >

compareValue.findFirstNonZeroPosition() ) {

if ( positive )

return false;

else

return true;

}

else if ( findFirstNonZeroPosition() <

compareValue.findFirstNonZeroPosition() ) {

if ( positive )

return true;

else

return false;

}

else {

for ( int i = 0; i < DIGITS; i++ ) {

if ( integer[ i ] > compareValue.integer[ i ] )

if ( positive )

return true;

else

return false;

}

if ( positive )

return false;

else

return true;

}

}

}

public boolean isLessThan( HugeInteger compareValue )

{

return !( isGreatThan( compareValue ) ||

isEqualTo( compareValue ) );

}

public boolean isGreatThanOrEqualTo( HugeInteger compareValue )

{

return !isLessThan( compareValue );

}

public boolean isLessThanOrEqualTo( HugeInteger compareValue )

{

return !isGreatThan( compareValue );

}

public boolean isZero()

{

for ( int i = 0; i < DIGITS; i++ ) {

if ( integer[ i ] != 0 )

return false;

}

return true;

}

}

public class HugeIntegerTest {

public static void main(String args[]){

String [][] testInputs = {

{"987654321", "234567890"},

{"987654321", "-234567890"},

{"-987654321", "234567890"},

{"-987654321", "-234567890"},

{"234567890", "987654321"},

{"234567890", "-987654321"},

{"-234567890", "987654321"},

{"-234567890", "-987654321"}

};

for(String [] ints : testInputs){

HugeInteger h1 = new HugeInteger(ints[0]);

HugeInteger h2 = new HugeInteger(ints[1]);

System.out.println("h1="+h1);

System.out.println("h2="+h2);

if(h1.isEqualTo(h2)){

System.out.println("h1 is equal to h2.");

}

if(h1.isNotEqualTo(h2)){

System.out.println("h1 is not equal to h2.");

}

if(h1.isGreatThan(h2)){

System.out.println("h1 is greater than h2.");

}

if(h1.isLessThan(h2)){

System.out.println("h1 is less than to h2.");

}

if(h1.isGreatThanOrEqualTo(h2)){

System.out.println("h1 is greater than or equal to h2.");

}

if(h1.isLessThanOrEqualTo(h2)){

System.out.println("h1 is less than or equal to h2.");

}

h1.add(h2); // h1 += h2

System.out.println("h1.add(h2);");

System.out.printf("h1=%s ",h1);

h1.subtract(h2); // h1 -= h2

System.out.println("h1.subtract(h2);");

h1.subtract(h2); // h1 -= h2

System.out.println("h1.subtract(h2);");

System.out.printf("h1=%s ",h1);

h1.add(h2); // h1 += h2

System.out.println("h1.add(h2);");

//h1.multiply(h2); // h1 *= h2

System.out.println("h1.multiply(h2);");

System.out.printf("h1=%s ",h1);

}

}

}

Where im having trouble is at line 394 and 395 where in make two objects h1 and h2. I cant seem to figure out why there is an error on both lines or if theres a place im missing that i have to add the h1 or h2 variable.

Explanation / Answer

Hi, I have fixed the compilation issue.

Please check.

public class HugeInteger {

   private final int DIGITS = 40;

   private int[] integer;

   private boolean positive;

   public HugeInteger()

   {

       integer = new int[ DIGITS ];

       positive = true;

   }

   public HugeInteger( String inputString )

   {

       char[] integerChar = inputString.toCharArray();

       if ( integerChar[0] == '-' )

           positive = false;

       if ( positive )

           integer[ DIGITS - integerChar.length ] = (int)integerChar[ 0 ] - (int)'0';

       for ( int i = 1; i < integerChar.length; i++ ) {

           integer[DIGITS - integerChar.length + i] = (int)integerChar[i] - ( int )'0';

       }

   }

   public void input( String inputString )

   {

       char[] integerChar = inputString.toCharArray();

       if ( integerChar[ 0 ] == '-' )

           positive = false;

       if ( positive )

           integer[ DIGITS - integerChar.length ] =

           ( int )integerChar[ 0 ] - ( int )'0';

       for ( int i = 1; i < integerChar.length; i++ )

           integer[ DIGITS - integerChar.length + i ] =

           ( int )integerChar[ i ] - ( int )'0';

   }

   public HugeInteger add( HugeInteger addValue )

   {

       HugeInteger temp = new HugeInteger();

       if ( ( positive && addValue.positive ) ||

               !( positive || addValue.positive ) )

           temp = addPositives( addValue );

       else if ( positive && ( !addValue.positive ) ) {

           addValue.positive = true;

           if ( isGreatThan( addValue ) )

               temp = subtractPositives( addValue );

           else {

               temp = addValue.subtractPositives( this );

               temp.positive = false;

           }

           addValue.positive = false;

       }

       else if ( !positive && addValue.positive ) {

           addValue.positive = false;

           if ( isGreatThan( addValue ) )

               temp = addValue.subtractPositives( this );

           else {

               temp = subtractPositives( addValue );

               temp.positive = false;

           }

           addValue.positive = true;

       }

       return temp;

   }

   public HugeInteger addPositives( HugeInteger addValue )

   {

       HugeInteger temp = new HugeInteger();

       int carry = 0;

       for ( int i = 39; i >= 0; i-- ) {

           temp.integer[ i ] =

                   integer[ i ] + addValue.integer[ i ] + carry;

           if ( temp.integer[ i ] > 9 ) {

               temp.integer[ i ] %= 10;

               carry = 1;

           }

           else

               carry = 0;

       }

       if ( !positive )

           temp.positive = false;

       return temp;

   }

   public HugeInteger subtract( HugeInteger subtractValue )

   {

       HugeInteger temp = new HugeInteger();

       if ( positive && ( !subtractValue.positive ) )

           temp = addPositives( subtractValue );

       else if ( !positive && subtractValue.positive ) {

           temp = addPositives( subtractValue );

       }

       if ( positive && subtractValue.positive )

           temp = subtractPositives( subtractValue );

       if ( !( positive || subtractValue.positive ) )

           temp = subtractValue.subtractPositives( this );

       return temp;

   }

   public HugeInteger subtractPositives( HugeInteger subtractValue )

   {

       int borrow = 0;

       HugeInteger temp = new HugeInteger();

       for ( int i = 39; i >= 0; i-- ) {

           if ( integer[i] < subtractValue.integer[ i ] ){

               temp.integer[ i ] = ( integer[ i ] + 10 ) -

                       subtractValue.integer[ i ] - borrow;

               borrow = 1;

           }

           else {

               temp.integer[ i ] =

                       integer[ i ] - subtractValue.integer[ i ] - borrow;

               borrow = 0;

           }

       }

       return temp;

   }

   public int findFirstNonZeroPosition()

   {

       int position = 39;

       for ( int i = 0; i < DIGITS; i++ ) {

           if ( integer[ i ] > 0 ) {

               position = i;

               break;

           }

       }

       return position;

   }

   public String toHugeIntegerString()

   {

       String sign = " ", output = " ";

       if ( !positive )

           sign = "-";

       for ( int i = findFirstNonZeroPosition(); i < DIGITS; i++ )

           output += integer[ i ];

       return sign + output;

   }

   public boolean isEqualTo( HugeInteger compareValue )

   {

       for ( int i = 0; i < DIGITS; i++ ) {

           if ( integer[ i ] != compareValue.integer[ i ] )

               return false;

       }

       if ( ( positive && compareValue.positive ) ||

               !( positive || compareValue.positive ) )

           return true;

       else

           return false;

   }

   public boolean isNotEqualTo( HugeInteger compareValue )

   {

       return !isEqualTo( compareValue );

   }

   public boolean isGreatThan( HugeInteger compareValue )

   {

       if ( positive && ( !compareValue.positive ) )

           return true;

       else if ( !positive && compareValue.positive )

           return false;

       else {

           if ( findFirstNonZeroPosition() >

           compareValue.findFirstNonZeroPosition() ) {

               if ( positive )

                   return false;

               else

                   return true;

           }

           else if ( findFirstNonZeroPosition() <

                   compareValue.findFirstNonZeroPosition() ) {

               if ( positive )

                   return true;

               else

                   return false;

           }

           else {

               for ( int i = 0; i < DIGITS; i++ ) {

                   if ( integer[ i ] > compareValue.integer[ i ] )

                       if ( positive )

                           return true;

                       else

                           return false;

               }

               if ( positive )

                   return false;

               else

                   return true;

           }

       }

   }

   public boolean isLessThan( HugeInteger compareValue )

   {

       return !( isGreatThan( compareValue ) ||

               isEqualTo( compareValue ) );

   }

   public boolean isGreatThanOrEqualTo( HugeInteger compareValue )

   {

       return !isLessThan( compareValue );

   }

   public boolean isLessThanOrEqualTo( HugeInteger compareValue )

   {

       return !isGreatThan( compareValue );

   }

   public boolean isZero()

   {

       for ( int i = 0; i < DIGITS; i++ ) {

           if ( integer[ i ] != 0 )

               return false;

       }

       return true;

   }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote