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

Debugging assistance? Somehow a 6 is getting turned into a 3, and I\'m getting w

ID: 3577082 • Letter: D

Question

Debugging assistance? Somehow a 6 is getting turned into a 3, and I'm getting weird outputs at the bottom of my code.

Instructions:

Write a Pentadeca class that encapsulates a Pentadeca number value. A Pentadeca number is one with base 15. THE USE OF ARRAYS IS NOT PERMITTED. The methods the class has are: public void read(), public void set(String), public void set(int), public void set(Pentadeca),public Pentadeca get(), public Pentadeca add(Pentadeca), public Pentadeca subtract(Pentadeca), public Pentadeca multiply(Pentadeca), public Pentadeca divide(Pentadeca), public Pentadeca add(int), public Pentadeca subtract(int), public Pentadeca multiply(int), public Pentadeca divide(int), ), public Pentadeca add(String), public Pentadeca subtract(String), public Pentadeca multiply(String), public Pentadeca divide(String), public boolean equals(Pentadeca), and public String toString(). Write private methods to check for valid character input, remove the base p character and set the sign. Your class must consider both positive and negative values. Your class should have at least 3 constructors: a default constructor, an explicit constructor with an integer argument and an explicit constructor with a String argument.

My code:

package classes;
public class Pentadeca
{
   private int pentadecaInt, sign;
   private String pentadecaString;
  
   public String getPentadecaString()
   {
       return pentadecaString;
   }
  
   public int getPentadecaInt()
   {
       return pentadecaInt;
   }
  
   public void setPentadeca(String pentadeca)
   {
       this.pentadecaString = pentadeca;
   }
  
   public void setPentadeca(int pentadeca)
   {
       this.pentadecaInt = pentadeca;
   }
  
   public Pentadeca()
   {
       this.pentadecaString = "";
       this.pentadecaInt = 0;
   }
  
   public Pentadeca(String pentadeca)
   {
       this.pentadecaString = pentadeca;
}

public Pentadeca(int pentadeca)
{
   this.pentadecaInt = pentadeca;
}
  
public Pentadeca(Pentadeca pentadeca)
{
   this.pentadecaString = pentadeca.pentadecaString;
   this.pentadecaInt = toInt(pentadeca.pentadecaString);  
}
  
public String toString()
{
   int stringInt = pentadecaInt;
   if(pentadecaString == null)
       pentadecaString = "";
  
   sign = 0;
   if(pentadecaInt < 0)
   {
       sign = -1;
       stringInt = pentadecaInt * -1;
   }
  
   while(!(stringInt == 0))
   {
       int part = stringInt % 15;
   String partString = "";
       if(part > 9)
       {
           switch(part)
           {
               case 10:
                   partString = "A";
                   break;
               case 11:
                   partString = "B";
                   break;
               case 12:
                   partString = "C";
                   break;
               case 13:
                   partString = "D";
                   break;
               case 14:
                   partString = "E";
                   break;
               default:
                   System.exit(0);
                   break;
           }
       }
       else if(part < 0)
           System.exit(0);
       else
           partString = part + "";
       pentadecaString = pentadecaString + partString;

       stringInt = stringInt / 15;
   }
   if(sign == -1)
       pentadecaString = "-" + pentadecaString;
   if(pentadecaString.indexOf('p') == -1)
       pentadecaString = pentadecaString + "p";
   return pentadecaString;
}
  
  
public int toInt(String pentadecaString)
{
   String integerString = pentadecaString;
  
   integerString = pentadecaString.trim();
   int p = pentadecaString.indexOf("p");
   if(!(p == -1))
       integerString = integerString.substring(0, p);
  
   sign = pentadecaString.indexOf("-");
   if(!(sign == -1))
       integerString = integerString.substring(sign + 1);
  
   integerString = integerString.toUpperCase();
  
   int exponent,
       length = integerString.length();
   for(exponent = 1; exponent <= length; exponent++)
   {
       int power = length - exponent + 1;
       String find = "" + power;
       int baseInt = Integer.parseInt(find);
       if(baseInt == -1)
       {
       char base = integerString.charAt(power);
           switch(base)
           {
               case 'A':
                   baseInt = 10;
                   break;
               case 'B':
                   baseInt = 11;
                   break;
               case 'C':
                   baseInt = 12;
                   break;
               case 'D':
                   baseInt = 13;
                   break;
               case 'E':
                   baseInt = 14;
                   break;
               default:
                   System.exit(0);
                   break;
           }
       }
       else if(baseInt > 9)
           System.exit(0);
       double pentadecaPower = Math.pow(15, exponent);
       int powerInt = (int)pentadecaPower;
      
       int total = baseInt * powerInt;
       System.out.println();
       pentadecaInt = pentadecaInt + total;
   }
   if((!(sign == -1))&&(!((exponent % 2) == 0)))
       pentadecaInt = pentadecaInt * -1;
   return pentadecaInt;
}

public Pentadeca add(int number)
{
   Pentadeca answer = new Pentadeca();
   int thisPentadecaInt = toInt(this.pentadecaString);  
  
   answer.pentadecaInt = number + thisPentadecaInt;

   return answer;
}
  
public Pentadeca add(String number)
{
   Pentadeca answer = new Pentadeca();
//   int thisPentadecaInt = toInt(number);  
   System.out.println(number);
   answer.pentadecaInt = + this.pentadecaInt;
   return answer;
}
  
public Pentadeca add(Pentadeca pentadeca)
{
   Pentadeca answer = new Pentadeca();
   int thisPentadecaInt = toInt(this.pentadecaString),
           pentPentadecaInt = toInt(pentadeca.pentadecaString);  
   System.out.println(answer.pentadecaInt + ", " + pentadeca.pentadecaString + ", " + thisPentadecaInt);
   answer.pentadecaInt = pentPentadecaInt + thisPentadecaInt;
  
   return answer;
}
  
public Pentadeca subtract(int number)
{
   Pentadeca answer = new Pentadeca();
   int thisPentadecaInt = toInt(this.pentadecaString);  
  
   answer.pentadecaInt = thisPentadecaInt - number;

   return answer;
}
  
public Pentadeca subtract(String number)
{
   return number;
}
  
public Pentadeca subtract(Pentadeca pentadeca)
{
   return pentadeca;
}
  
public Pentadeca multiply(int number)
{
   Pentadeca answer = new Pentadeca();
   int thisPentadecaInt = toInt(this.pentadecaString);  
  
   answer.pentadecaInt = number * thisPentadecaInt;

   return answer;
}
  
public Pentadeca multiply(String number)
{
   return number;
}
  
public Pentadeca multiply(Pentadeca pentadeca)
{
   return pentadeca;
}
  
public Pentadeca divide(int number)
{
   Pentadeca answer = new Pentadeca();
   int thisPentadecaInt = toInt(this.pentadecaString);  
  
   answer.pentadecaInt = thisPentadecaInt / number;

   return answer;
}
  
public Pentadeca divide(String number)
{
   return number;
}
  
public Pentadeca divide(Pentadeca pentadeca)
{
   return pentadeca;
}
  
public boolean equals(Pentadeca pentadeca)
{
   return this.pentadecaString.equalsIgnoreCase(pentadeca.pentadecaString);
}
}

main program:

public class PentadecaDemo
{
   public static void main(String[] args)
   {
       Pentadeca Pentadeca1 = new Pentadeca ("123p");
       Pentadeca Pentadeca2 = new Pentadeca ("126p");
       Pentadeca Pentadeca4, Pentadeca5, Pentadeca6, Pentadeca7;
       Pentadeca Pentadeca8 = new Pentadeca(1999);
       System.out.println ("Pentadeca number Pentadeca8: " + Pentadeca8);
       System.out.println ("First Pentadeca number: " + Pentadeca1);
       System.out.println ("Second Pentadeca number: " + Pentadeca2);
       if (Pentadeca1.equals(Pentadeca2))
           System.out.println ("Pentadeca1 and Pentadeca2 are equal.");
       else
           System.out.println ("Pentadeca1 and Pentadeca2 are NOT equal.");
       Pentadeca4 = Pentadeca1.add(Pentadeca2);
       Pentadeca5 = Pentadeca1.subtract(Pentadeca2);
       Pentadeca6 = Pentadeca1.multiply(Pentadeca2);
       Pentadeca7 = Pentadeca1.divide(Pentadeca2);
       System.out.println (Pentadeca1 + " + " + Pentadeca2 + " is: " +
               Pentadeca4);
       System.out.println (Pentadeca1 + " - " + Pentadeca2 + " is: " +
               Pentadeca5);
       System.out.println (Pentadeca1 + " * " + Pentadeca2 + " is: " +
               Pentadeca6);
       System.out.println (Pentadeca1 + " / " + Pentadeca2 + " is: " +
               Pentadeca7);
       System.out.println ();
       int number = 6;
       System.out.println ("using the integer " + number + " as the argument "
               +
               "to the math operators ");
       Pentadeca4 = Pentadeca1.add(number);
       Pentadeca5 = Pentadeca1.subtract(number);
       Pentadeca6 = Pentadeca1.multiply(number);
       Pentadeca7 = Pentadeca1.divide(number);
       System.out.println (Pentadeca1 + " + " + number + " is: " + Pentadeca4);
       System.out.println (Pentadeca1 + " - " + number + " is: " + Pentadeca5);
       System.out.println (Pentadeca1 + " * " + number + " is: " + Pentadeca6);
       System.out.println (Pentadeca1 + " / " + number + " is: " + Pentadeca7);
       String value = "6p";
       System.out.println ("using the String " + """ + value + """ + " as the argument " +
               "to the math operators ");
       Pentadeca4 = Pentadeca1.add(value);
       Pentadeca5 = Pentadeca1.subtract(value);
       Pentadeca6 = Pentadeca1.multiply(value);
       Pentadeca7 = Pentadeca1.divide(value);
       System.out.println (Pentadeca1 + " + " + value + " is: " + Pentadeca4);
       System.out.println (Pentadeca1 + " - " + value + " is: " + Pentadeca5);
       System.out.println (Pentadeca1 + " * " + value + " is: " + Pentadeca6);
       System.out.println (Pentadeca1 + " / " + value + " is: " + Pentadeca7);
   }
}

Explanation / Answer

PentadecaDemo.java

public class PentadecaDemo {
   public static void main(String[] args) {
       Pentadeca Pentadeca1 = new Pentadeca("123p");
       Pentadeca Pentadeca2 = new Pentadeca("126p");
       Pentadeca Pentadeca4, Pentadeca5, Pentadeca6, Pentadeca7;
       Pentadeca Pentadeca8 = new Pentadeca(1999);
       System.out.println("Pentadeca number Pentadeca8: " + Pentadeca8);
       System.out.println("First Pentadeca number: " + Pentadeca1);
       System.out.println("Second Pentadeca number: " + Pentadeca2);
       if (Pentadeca1.equals(Pentadeca2))
           System.out.println("Pentadeca1 and Pentadeca2 are equal.");
       else
           System.out.println("Pentadeca1 and Pentadeca2 are NOT equal.");
       Pentadeca4 = Pentadeca1.add(Pentadeca2);
       Pentadeca5 = Pentadeca1.subtract(Pentadeca2);
       Pentadeca6 = Pentadeca1.multiply(Pentadeca2);
       Pentadeca7 = Pentadeca1.divide(Pentadeca2);
       System.out.println(Pentadeca1 + " + " + Pentadeca2 + " is: "
               + Pentadeca4);
       System.out.println(Pentadeca1 + " - " + Pentadeca2 + " is: "
               + Pentadeca5);
       System.out.println(Pentadeca1 + " * " + Pentadeca2 + " is: "
               + Pentadeca6);
       System.out.println(Pentadeca1 + " / " + Pentadeca2 + " is: "
               + Pentadeca7);
       System.out.println();
       int number = 6;
       System.out.println("using the integer " + number + " as the argument "
               + "to the math operators ");
       Pentadeca4 = Pentadeca1.add(number);
       Pentadeca5 = Pentadeca1.subtract(number);
       Pentadeca6 = Pentadeca1.multiply(number);
       Pentadeca7 = Pentadeca1.divide(number);
       System.out.println(Pentadeca1 + " + " + number + " is: " + Pentadeca4);
       System.out.println(Pentadeca1 + " - " + number + " is: " + Pentadeca5);
       System.out.println(Pentadeca1 + " * " + number + " is: " + Pentadeca6);
       System.out.println(Pentadeca1 + " / " + number + " is: " + Pentadeca7);
       String value = "6p";
       System.out.println("using the String " + """ + value + """
               + " as the argument " + "to the math operators ");
       Pentadeca4 = Pentadeca1.add(value);
       Pentadeca5 = Pentadeca1.subtract(value);
       Pentadeca6 = Pentadeca1.multiply(value);
       Pentadeca7 = Pentadeca1.divide(value);
       System.out.println(Pentadeca1 + " + " + value + " is: " + Pentadeca4);
       System.out.println(Pentadeca1 + " - " + value + " is: " + Pentadeca5);
       System.out.println(Pentadeca1 + " * " + value + " is: " + Pentadeca6);
       System.out.println(Pentadeca1 + " / " + value + " is: " + Pentadeca7);
   }
}

------------------------------------

Pentadeca.java


public class Pentadeca {
   private int pentadecaInt, sign;
   private String pentadecaString;

   public String getPentadecaString() {
       return pentadecaString;
   }

   public int getPentadecaInt() {
       return pentadecaInt;
   }

   public void setPentadeca(String pentadeca) {
       this.pentadecaString = pentadeca;
   }

   public void setPentadeca(int pentadeca) {
       this.pentadecaInt = pentadeca;
   }

   public Pentadeca() {
       this.pentadecaString = "";
       this.pentadecaInt = 0;
   }

   public Pentadeca(String pentadeca) {
       this.pentadecaString = pentadeca;
   }

   public Pentadeca(int pentadeca) {
       this.pentadecaInt = pentadeca;
   }

   public Pentadeca(Pentadeca pentadeca) {
       this.pentadecaString = pentadeca.pentadecaString;
       this.pentadecaInt = toInt(pentadeca.pentadecaString);
   }

   public String toString() {
       int stringInt = pentadecaInt;
       if (pentadecaString == null)
           pentadecaString = "";

       sign = 0;
       if (pentadecaInt < 0) {
           sign = -1;
           stringInt = pentadecaInt * -1;
       }

       while (!(stringInt == 0)) {
           int part = stringInt % 15;
           String partString = "";
           if (part > 9) {
               switch (part) {
               case 10:
                   partString = "A";
                   break;
               case 11:
                   partString = "B";
                   break;
               case 12:
                   partString = "C";
                   break;
               case 13:
                   partString = "D";
                   break;
               case 14:
                   partString = "E";
                   break;
               default:
                   System.exit(0);
                   break;
               }
           } else if (part < 0)
               System.exit(0);
           else
               partString = part + "";
           pentadecaString = pentadecaString + partString;
           stringInt = stringInt / 15;
       }
       if (sign == -1)
           pentadecaString = "-" + pentadecaString;
       if (pentadecaString.indexOf('p') == -1)
           pentadecaString = pentadecaString + "p";
       return pentadecaString;
   }

   public int toInt(String pentadecaString) {
       String integerString = pentadecaString;

       integerString = pentadecaString.trim();
       int p = pentadecaString.indexOf("p");
       if (!(p == -1))
           integerString = integerString.substring(0, p);

       sign = pentadecaString.indexOf("-");
       if (!(sign == -1))
           integerString = integerString.substring(sign + 1);

       integerString = integerString.toUpperCase();

       int exponent, length = integerString.length();
       for (exponent = 1; exponent <= length; exponent++) {
           int power = length - exponent + 1;
           String find = "" + power;
           int baseInt = Integer.parseInt(find);
           if (baseInt == -1) {
               char base = integerString.charAt(power);
               switch (base) {
               case 'A':
                   baseInt = 10;
                   break;
               case 'B':
                   baseInt = 11;
                   break;
               case 'C':
                   baseInt = 12;
                   break;
               case 'D':
                   baseInt = 13;
                   break;
               case 'E':
                   baseInt = 14;
                   break;
               default:
                   System.exit(0);
                   break;
               }
           } else if (baseInt > 9)
               System.exit(0);
           double pentadecaPower = Math.pow(15, exponent);
           int powerInt = (int) pentadecaPower;

           int total = baseInt * powerInt;
           System.out.println();
           pentadecaInt = pentadecaInt + total;
       }
       if ((!(sign == -1)) && (!((exponent % 2) == 0)))
           pentadecaInt = pentadecaInt * -1;
       return pentadecaInt;
   }

   public Pentadeca add(int number) {
       Pentadeca answer = new Pentadeca();
       int thisPentadecaInt = toInt(this.pentadecaString);

       answer.pentadecaInt = number + thisPentadecaInt;
       return answer;
   }

   public Pentadeca add(String number) {
       Pentadeca answer = new Pentadeca();
       // int thisPentadecaInt = toInt(number);
       System.out.println(number);
       answer.pentadecaInt = +this.pentadecaInt;
       return answer;
   }

   public Pentadeca add(Pentadeca pentadeca) {
       Pentadeca answer = new Pentadeca();
       int thisPentadecaInt = toInt(this.pentadecaString), pentPentadecaInt = toInt(pentadeca.pentadecaString);
       System.out.println(answer.pentadecaInt + ", "
               + pentadeca.pentadecaString + ", " + thisPentadecaInt);
       answer.pentadecaInt = pentPentadecaInt + thisPentadecaInt;

       return answer;
   }

   public Pentadeca subtract(int number) {
       Pentadeca answer = new Pentadeca();
       int thisPentadecaInt = toInt(this.pentadecaString);

       answer.pentadecaInt = thisPentadecaInt - number;
       return answer;
   }

   public Pentadeca subtract(String number) {
       return new Pentadeca(number);
   }

   public Pentadeca subtract(Pentadeca pentadeca) {
       return pentadeca;
   }

   public Pentadeca multiply(int number) {
       Pentadeca answer = new Pentadeca();
       int thisPentadecaInt = toInt(this.pentadecaString);

       answer.pentadecaInt = number * thisPentadecaInt;
       return answer;
   }

   public Pentadeca multiply(String number) {
       return new Pentadeca(number);
   }

   public Pentadeca multiply(Pentadeca pentadeca) {
       return pentadeca;
   }

   public Pentadeca divide(int number) {
       Pentadeca answer = new Pentadeca();
       int thisPentadecaInt = toInt(this.pentadecaString);

       answer.pentadecaInt = thisPentadecaInt / number;
       return answer;
   }

   public Pentadeca divide(String number) {
       return new Pentadeca(number);
   }

   public Pentadeca divide(Pentadeca pentadeca) {
       return pentadeca;
   }

   public boolean equals(Pentadeca pentadeca) {
       return this.pentadecaString.equalsIgnoreCase(pentadeca.pentadecaString);
   }
}

----------------------------------------

output:

Pentadeca number Pentadeca8: 4D8p
First Pentadeca number: 123p
Second Pentadeca number: 126p
Pentadeca1 and Pentadeca2 are NOT equal.


0, 126p, 3870
123p0642 + 126p is: 0963p
123p06420642 - 126p is: 126p
123p064206420642 * 126p is: 126p
123p0642064206420642 / 126p is: 126p

using the integer 6 as the argument to the math operators


123p064206420642064203D6 + 6 is: 6963p
123p064206420642064203D603D6 - 6 is: 9B84p
123p064206420642064203D603D603D6 * 6 is: 00642p
123p064206420642064203D603D603D603D6 / 6 is: 0321p
using the String "6p" as the argument to the math operators
6p
123p064206420642064203D603D603D603D603D6 + 6p is: 03D6p
123p064206420642064203D603D603D603D603D603D6 - 6p is: 6p
123p064206420642064203D603D603D603D603D603D603D6 * 6p is: 6p
123p064206420642064203D603D603D603D603D603D603D603D6 / 6p is: 6p

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