Question: Here is my Code: package HugeIntTest; class HugeInteger { private final int DIGITS = 40; private int[] integer; private boolean positive; public HugeInteger() { integer
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.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
