Write a Hexadecimal class that encapsulates a hexadecimal number value. THE USE
ID: 3538191 • Letter: W
Question
Write a Hexadecimal class that encapsulates a hexadecimal number value. THE USE OF ARRAYS IS NOT PERMITTED. The methods the class has are: public void read(), public void set(String), public void set(Hexadecimal), public Hexadecimal add(Hexadecimal), public Hexadecimal subtract(Hexadecimal), public Hexadecimal multiply(Hexadecimal), public Hexadecimal divide(Hexadecimal), public Hexadecimal add(int), public Hexadecimal subtract(int), public Hexadecimal multiply(int),public Hexadecimal divide(int), public boolean equals(Hexadecimal), and public String toString(). Write a private method to check for valid characters as input. 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.
Demo:
public class HexadecimalDemo
{
public static void main(String[] args)
{
Hexadecimal hex1 = new Hexadecimal ("123h");
Hexadecimal hex2 = new Hexadecimal ("123h");
Hexadecimal hex4, hex5, hex6, hex7;
Hexadecimal hex8 = new Hexadecimal(1999);
System.out.println ("Hexadecimal number hex8: " + hex8);
System.out.println ("First Hexadecimal number: " + hex1);
System.out.println ("Second Hexadecimal number: " + hex2);
if (hex1.equals(hex2))
System.out.println ("hex1 and hex2 are equal.");
else
System.out.println ("hex1 and hex2 are NOT equal.");
hex4 = hex1.add(hex2);
hex5 = hex1.subtract(hex2);
hex6 = hex1.multiply(hex2);
hex7 = hex1.divide(hex2);
System.out.println (hex1 + " + " + hex2 + " is: " + hex4);
System.out.println (hex1 + " - " + hex2 + " is: " + hex5);
System.out.println (hex1 + " * " + hex2 + " is: " + hex6);
System.out.println (hex1 + " / " + hex2 + " is: " + hex7);
System.out.println ();
int number = 6;
System.out.println ("using the integer " + number + " as the
argument " +
"to the math operators ");
hex4 = hex1.add(number);
hex5 = hex1.subtract(number);
hex6 = hex1.multiply(number);
hex7 = hex1.divide(number);
System.out.println (hex1 + " + " + number + " is: " + hex4);
System.out.println (hex1 + " - " + number + " is: " + hex5);
System.out.println (hex1 + " * " + number + " is: " + hex6);
System.out.println (hex1 + " / " + number + " is: " + hex7);
String value = "6h";
System.out.println ("using the String " + """ + value + """
+ " as the argument " +
"to the math operators ");
hex4 = hex1.add(value);
hex5 = hex1.subtract(value);
hex6 = hex1.multiply(value);
hex7 = hex1.divide(value);
System.out.println (hex1 + " + " + value + " is: " + hex4);
System.out.println (hex1 + " - " + value + " is: " + hex5);
System.out.println (hex1 + " * " + value + " is: " + hex6);
System.out.println (hex1 + " / " + value + " is: " + hex7);
}
}
Explanation / Answer
public class Hexadecimal {
String hex;
public Hexadecimal(){
}
public Hexadecimal(String hex){
//when we try to create object, we have to be make sure the input is valid input or not.
//if the user enter "abcdefgh", It is invalid, So it will fail to
//build Hexadecimal object itself.
try{
Integer.valueOf(hex, 16);
}catch(NumberFormatException e){
System.out.println("Parsing Error : Invalid input....");
}
this.hex = hex;
}
public Hexadecimal(int number){
hex = Integer.toHexString(number);
}
public void setHex(String hex){
//when we try to create object, we have to be make sure the input is valid input or not.
//if the user enter "abcdefgh", It is invalid, So it will fail to
//build Hexadecimal object itself.
try{
Integer.valueOf(hex, 16);
}catch(NumberFormatException e){
System.out.println("Parsing Error : Invalid input....");
}
this.hex = hex;
}
public void setHex(int number){
hex = Integer.toHexString(number);
}
@Override
public boolean equals(Object obj) {
//check the object is Hexadecimal or not
//if not return false;
if(!(obj instanceof Hexadecimal)){
return false;
}
//if it is Hexadecimal object, we will check the content is equal or not.
//if user enter "abcd" and "ABCD" output has to be true.
//so only here converting it to int and checking.
return Integer.valueOf(hex, 16).equals(Integer.valueOf(((Hexadecimal)obj).toString(), 16));
}
@Override
public int hashCode() {
return Integer.valueOf(hex,16).hashCode();
}
//This mothod will return the hex value
public String toString(){
return hex;
}
//this method will add the input hexadecimal to present object hexadecimal number.
//present hex + input hex
//if input hex is null(I have written like this, if you want to throw NullPointerException if input is null)
//return present hex
public Hexadecimal add(Hexadecimal add){
//check if input is null or not.
//if null just return present Hexadecimal object.
if(add == null){
return this;
}
//else we need to convert hex as integer and input as integer
//and add it and create new Hexadecimal object and return it.
else{
int number1 = Integer.parseInt(hex);
int number2 = Integer.parseInt(add.toString());
return new Hexadecimal(Integer.toHexString(number1 + number2));
}
}
//this method will subtract the input hexadecimal from present object hexadecimal number.
//present hex - input hex
//if input hex is null(I have written like this, if you want to throw NullPointerException if input is null)
//return present hex
public Hexadecimal subtract(Hexadecimal subtract){
//check if input is null or not.
//if null just return present Hexadecimal object.
if(subtract == null){
return this;
}
//else we need to convert hex as integer and input as integer
//and subtract it and create new Hexadecimal object and return it.
else{
int number1 = Integer.parseInt(hex);
int number2 = Integer.parseInt(subtract.toString());
return new Hexadecimal(Integer.toHexString(number1 - number2));
}
}
//this method will multiply the input hexadecimal from present object hexadecimal number.
//present hex * input hex
//if input hex is null(I have written like this, if you want to throw NullPointerException if input is null)
//return present hex
public Hexadecimal multiply(Hexadecimal multiply){
//check if input is null or not.
//if null just return present Hexadecimal object.
if(multiply == null){
return this;
}
//else we need to convert hex as integer and input as integer
//and multiply it and create new Hexadecimal object and return it.
else{
int number1 = Integer.parseInt(hex);
int number2 = Integer.parseInt(multiply.toString());
return new Hexadecimal(Integer.toHexString(number1 * number2));
}
}
//this method will divide the input hexadecimal from present object hexadecimal number.
//present hex / input hex
//if input hex is null (I have written like this, if you want to throw NullPointerException if input is null)
//return present hex
public Hexadecimal divide(Hexadecimal divide){
//check if input is null or not.
//if null just return present Hexadecimal object.
if(divide == null){
return this;
}
//else we need to convert hex as integer and input as integer
//and multiply it and create new Hexadecimal object and return it.
else{
int number1 = Integer.parseInt(hex);
int number2 = Integer.parseInt(divide.toString());
return new Hexadecimal(Integer.toHexString(number1 / number2));
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.