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

Java Problem: Write a Temperature class that represents temperatures in degrees

ID: 3802797 • Letter: J

Question

Java Problem: Write a Temperature class that represents temperatures in degrees in both Celsius and Fahrenheit. Use a floating-point number for the temperature and a character for the scale: either 'C' for Celsius or 'F' for Fahrenheit. The class should have

- Four constructors : one for the number of degrees, one for the scale, one for both the degrees and the scale, and a default constructor . For each of these constructors , assume zero degrees if no value is specified and Celsius if no scale is given .

- Two accessor methods : one to return the temperature in degrees Cel- sius, the other to return it in degrees Fahrenheit. Use the formulas from Practice Program 5 of Chapter 3 and round to the nearest tenth of a degree.

- Three set methods : one to set the number of degrees, one to set the scale, and one to set both.

- Three comparison methods : one to test whether two temperatures are equal , one to test whether one temperature is greater than another, and one to test whether one temperature is less than another.

Write a driver program that tests all the methods . Be sure to invoke each of the constructors , to include at least one true and one false case for each comparison method , and to test at least the following three temperature pairs for equality: 0.0 degrees C and 32.0 degrees F, ?40.0 degrees C and ?40.0 degrees F, and 100.0 degrees C and 212.0 degrees F.

SAMPLE RUN #4: java Temperature

Interactive Session Standard Input

My solution:

public class Temperature
{
   private double degrees;
   private char scale;
   public Temperature()
   {
       degrees = 0.0;
       scale = 'C';
   }
   public Temperature(double newDegrees)
   {
       degrees = newDegrees;
       scale = 'C';
   }
   public Temperature(char newScale)
   {
       degrees = 0.0;
       scale = newScale;
   }
   public Temperature(double newDegrees, char newScale)
   {
       degrees = newDegrees;
       scale = newScale;
   }

   public double getDegreesC ()
   {
       double val = scale == 'C' ? degrees : 5 * (degrees - 32) / 9;
       return Math.round (val * 10.0) / 10.0;
   }
   public double getDegreesF ()
   {
       double val = scale == 'F' ? degrees : 9 * (degrees / 5) + 32;
       return Math.round (val * 10.0) / 10.0;
   }
   public void setDegrees(double newDegrees)
   {
       degrees = newDegrees;
   }
   public void setScale (char newScale)
   {
       scale = newScale;;
   }
   public void setDegreesAndScale (double newDegrees, char newScale)
   {
           degrees = newDegrees;
           scale = newScale;
   }

   public boolean isEqualTo (Temperature newTemp)
   {
       if(scale == 'C')
       {
           if(newTemp.scale == 'C')
               return(degrees == newTemp.degrees);
           else
               return(degrees == newTemp.getDegreesC());
       }
       else
       {
           if(newTemp.scale == 'F')
               return(degrees == newTemp.degrees);
           else
               return(degrees == newTemp.getDegreesF());
       }
   }
              
   public boolean isGreaterThan (Temperature newTemp)
   {
       if(scale == 'C')
       {
           if(newTemp.scale == 'C')
               return(degrees > newTemp.degrees);
           else
               return(degrees > newTemp.getDegreesC());
       }
       else
       {
           if(newTemp.scale == 'F')
               return(degrees > newTemp.degrees);
           else
               return(degrees > newTemp.getDegreesF());
       }
   }

   public boolean isLessThan (Temperature newTemp)
   {
       if(scale == 'C')
       {
           if(newTemp.scale == 'C')
               return(degrees < newTemp.degrees);
           else
               return(degrees < newTemp.getDegreesC());
       }
       else
       {
           if(newTemp.scale == 'F')
               return(degrees < newTemp.degrees);
           else
               return(degrees < newTemp.getDegreesF());
       }
   }


   public String toString()
   {
       return degrees + "u00b0" + scale;
   }

}  

TemperatureTest.java
import java.util.Scanner;
public class TemperatureTest
{
   public static void main(String[] args)
   {
       System.out.print("Invoking default constructor: Temperature obj1;");
       Temperature obj1 = new Temperature();
       System.out.println("getTempC = " +obj1.getDegreesC());
       System.out.println("getTempF = " +obj1.getDegreesF());
       System.out.println("getScale = " +obj1.getScale());
             
       Scanner userChoice = new Scanner (System.in);
       System.out.print("Enter the temperature to create an object with the second constructor: ");
       Temperature obj2 = new Temperature(userChoice.nextDouble());
       System.out.println("getTempC = " +obj2.getDegreesC());
       System.out.println("getTempF = " +obj2.getDegreesF());
       System.out.println("getScale = " +obj2.getScale());
                         
       System.out.print("Enter the temperature space F or C to create an object with the third constructor: ");
       Scanner sc = new Scanner (System.in).useDelimiter("\s");;
       double temp = sc.nextDouble(); //it will not leave until user enters data.
       String scale = sc.next(); //we can read specific data.
       Temperature obj3 = new Temperature(temp, scale.charAt(0));
       System.out.println("getTempC = " +obj3.getDegreesC());
       System.out.println("getTempF = " +obj3.getDegreesF());
       System.out.println("getScale = " +obj3.getScale());
      
       System.out.print("Enter the temperature space F or C to create an object with the fourth object whose mutators will be tested:Here is the state of the new Temperature object: ");
       Scanner sc1 = new Scanner (System.in).useDelimiter("\s");;
       double temp1 = sc1.nextDouble(); //it will not leave until user enters data.
       String scale = sc1.next(); //we can read specific data.
       Temperature obj4 = new Temperature(temp1, scale1.charAt(0));
       System.out.println("getTempC = " +obj4.getDegreesC());
       System.out.println("getTempF = " +obj4.getDegreesF());
       System.out.println("getScale = " +obj4.getScale());

      
      
      
       Temperature temp1 = new Temperature(0.0, 'C');
       Temperature temp2 = new Temperature(32.0, 'F');
       Temperature temp3 = new Temperature(-40.0);
       Temperature temp4 = new Temperature(-40.0, 'F');
       Temperature temp5 = new Temperature(20.0, 'C');
       Temperature temp6 = new Temperature(100.0, 'C');
       Temperature temp7 = new Temperature(212.0);
      
       temp3.setScale('C');
       temp7.setScale('F');  
      
      
                         
System.out.print("Created objects 0.0 C, 20.0 C, 32.0 F, -40.0 C, -40.0 F, 212.0 F, 100.0 C to test equality method of objects.");
                         
System.out.println("Temperature " + temp1.toString() + "<" + temp6.toString() + "=true" + temp1.isLessThan(temp6));
System.out.println("Temperature " + temp1.toString() + "<" + temp2.toString() + "=false" + temp1.isLessThan(temp2));
                                          
System.out.println("Temperature " + temp5.toString() + ">" + temp7.toString() + "=false" + temp5.isGreaterThan(temp7));
System.out.println("Temperature " + temp5.toString() + ">" + temp1.toString() + "=false" + temp5.isGreaterThan(temp1));

System.out.print("All of the following equality tests using the object methods should yield 'true'");
      
System.out.println("Temperature " + temp1.toString() + "=" + temp2.toString() + "=true" + temp1.isEqualTo(temp2));
System.out.println("Temperature " + temp3.toString() + "=" + temp4.toString() + "=true" + temp3.isEqualTo(temp4));
System.out.println("Temperature " + temp6.toString() + "=" + temp7.toString() + "=true" + temp6.isEqualTo(temp7));
   }
}

Error message:

COMPILER ERROR MESSAGES

Question: How can I correct the code? I feel like I am close. Any ideas?

Thanks!

Explanation / Answer

In this I wrote getScale() method and avoid duplicate varibales i should work

PROGRAM:

//TemperatureTest.java

import java.util.Scanner;

public class TemperatureTest

{

   public static void main(String[] args)

{

System.out.print("Invoking default constructor: Temperature obj1;");

Temperature obj1 = new Temperature();

System.out.println("getTempC = " +obj1.getDegreesC());

System.out.println("getTempF = " +obj1.getDegreesF());

System.out.println("getScale = " +obj1.getScale());

Scanner userChoice = new Scanner (System.in);

System.out.print("Enter the temperature to create an object with the second constructor: ");

Temperature obj2 = new Temperature(userChoice.nextDouble());

System.out.println("getTempC = " +obj2.getDegreesC());

System.out.println("getTempF = " +obj2.getDegreesF());

System.out.println("getScale = " +obj2.getScale());

System.out.print("Enter the temperature space F or C to create an object with the third constructor: ");

Scanner sc = new Scanner (System.in).useDelimiter("\s");;

double temp = sc.nextDouble(); //it will not leave until user enters data.

String scale = sc.next(); //we can read specific data.

Temperature obj3 = new Temperature(temp, scale.charAt(0));

System.out.println("getTempC = " +obj3.getDegreesC());

System.out.println("getTempF = " +obj3.getDegreesF());

System.out.println("getScale = " +obj3.getScale());

  

System.out.print("Enter the temperature space F or C to create an object with the fourth object whose mutators will be tested:Here is the state of the new Temperature object: ");

Scanner sc1 = new Scanner (System.in).useDelimiter("\s");;

double temp11 = sc1.nextDouble(); //it will not leave until user enters data.

scale = sc1.next(); //we can read specific data.

Temperature obj4 = new Temperature(temp11, scale.charAt(0));

System.out.println("getTempC = " +obj4.getDegreesC());

System.out.println("getTempF = " +obj4.getDegreesF());

System.out.println("getScale = " +obj4.getScale());

  

  

  

Temperature temp1 = new Temperature(0.0, 'C');

Temperature temp2 = new Temperature(32.0, 'F');

Temperature temp3 = new Temperature(-40.0);

Temperature temp4 = new Temperature(-40.0, 'F');

Temperature temp5 = new Temperature(20.0, 'C');

Temperature temp6 = new Temperature(100.0, 'C');

Temperature temp7 = new Temperature(212.0);

  

temp3.setScale('C');

temp7.setScale('F');

  

  

System.out.print("Created objects 0.0 C, 20.0 C, 32.0 F, -40.0 C, -40.0 F, 212.0 F, 100.0 C to test equality method of objects.");

System.out.println("Temperature " + temp1.toString() + "<" + temp6.toString() + "=true" + temp1.isLessThan(temp6));

System.out.println("Temperature " + temp1.toString() + "<" + temp2.toString() + "=false" + temp1.isLessThan(temp2));

  

System.out.println("Temperature " + temp5.toString() + ">" + temp7.toString() + "=false" + temp5.isGreaterThan(temp7));

System.out.println("Temperature " + temp5.toString() + ">" + temp1.toString() + "=false" + temp5.isGreaterThan(temp1));

System.out.print("All of the following equality tests using the object methods should yield 'true'");

  

System.out.println("Temperature " + temp1.toString() + "=" + temp2.toString() + "=true" + temp1.isEqualTo(temp2));

System.out.println("Temperature " + temp3.toString() + "=" + temp4.toString() + "=true" + temp3.isEqualTo(temp4));

System.out.println("Temperature " + temp6.toString() + "=" + temp7.toString() + "=true" + temp6.isEqualTo(temp7));

}

}

//Temperature.java

package temperature;

public class Temperature

{

   private double degrees;

private char scale;

public Temperature()

{

degrees = 0.0;

scale = 'C';

}

public Temperature(double newDegrees)

{

degrees = newDegrees;

scale = 'C';

}

public Temperature(char newScale)

{

degrees = 0.0;

scale = newScale;

}

public Temperature(double newDegrees, char newScale)

{

degrees = newDegrees;

scale = newScale;

}

public double getDegreesC ()

{

double val = scale == 'C' ? degrees : 5 * (degrees - 32) / 9;

return Math.round (val * 10.0) / 10.0;

}

public double getDegreesF ()

{

double val = scale == 'F' ? degrees : 9 * (degrees / 5) + 32;

return Math.round (val * 10.0) / 10.0;

}

public void setDegrees(double newDegrees)

{

degrees = newDegrees;

}

public void setScale (char newScale)

{

scale = newScale;;

}

  

public char getScale()

{

   return scale;

}

public void setDegreesAndScale (double newDegrees, char newScale)

{

degrees = newDegrees;

scale = newScale;

}

public boolean isEqualTo (Temperature newTemp)

{

if(scale == 'C')

{

if(newTemp.scale == 'C')

return(degrees == newTemp.degrees);

else

return(degrees == newTemp.getDegreesC());

}

else

{

if(newTemp.scale == 'F')

return(degrees == newTemp.degrees);

else

return(degrees == newTemp.getDegreesF());

}

}

  

public boolean isGreaterThan (Temperature newTemp)

{

if(scale == 'C')

{

if(newTemp.scale == 'C')

return(degrees > newTemp.degrees);

else

return(degrees > newTemp.getDegreesC());

}

else

{

if(newTemp.scale == 'F')

return(degrees > newTemp.degrees);

else

return(degrees > newTemp.getDegreesF());

}

}

public boolean isLessThan (Temperature newTemp)

{

if(scale == 'C')

{

if(newTemp.scale == 'C')

return(degrees < newTemp.degrees);

else

return(degrees < newTemp.getDegreesC());

}

else

{

if(newTemp.scale == 'F')

return(degrees < newTemp.degrees);

else

return(degrees < newTemp.getDegreesF());

}

}

public String toString()

{

return degrees + "u00b0" + scale;

}

}

OUTPUT:

Invoking default constructor: Temperature obj1;getTempC = 0.0

getTempF = 32.0

getScale = C

Enter the temperature to create an object with the second constructor: 2

getTempC = 2.0

getTempF = 35.6

getScale = C

Enter the temperature space F or C to create an object with the third constructor: 3

4

getTempC = -16.1

getTempF = 37.4

getScale = 4

Enter the temperature space F or C to create an object with the fourth object whose mutators will be tested:Here is the state of the new Temperature object: 23

3

getTempC = -5.0

getTempF = 73.4

getScale = 3

Created objects 0.0 C, 20.0 C, 32.0 F, -40.0 C, -40.0 F, 212.0 F, 100.0 C to test equality method of objects.Temperature 0.0°C<100.0°C=truetrue

Temperature 0.0°C<32.0°F=falsefalse

Temperature 20.0°C>212.0°F=falsefalse

Temperature 20.0°C>0.0°C=falsetrue

All of the following equality tests using the object methods should yield 'true'Temperature 0.0°C=32.0°F=truetrue

Temperature -40.0°C=-40.0°F=truetrue

Temperature 100.0°C=212.0°F=truetrue

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