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

While trying to do a project assigned in myprogramminglab, I received this unhel

ID: 3801609 • Letter: W

Question

While trying to do a project assigned in myprogramminglab, I received this unhelpful message when I submitted my java code:

CODELAB ANALYSIS: LOGICAL ERROR(S)



Problems Detected:
          The contents of your standard output is incorrect.

Given the following was entered from the keyboard:
23
72 F
22 F

you displayed:

instead of:
Invoking default constructor: Temperature obj1;
getTempC= 0.0
getTempF= 32.0
getScale= C
Enter a temperature to create an object with the second constructor:getTempC= 23.0
getTempF= 73.4
getScale= C
Enter a temperature space F or C to create an object with the third constructor:getTempC= 22.2
getTempF= 72.0
...

The 'you displayed is blank', so I don't even know where to begin to correct the code to what they want. Here is the full 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.

The formula mentioned is:"Degrees_C=5(Degrees_F-32)/9" and "Degrees_F=(9(Degrees_C)/5)+32)"

This is my code:

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;
   }
}
  


class TemperatureTest
{
   public static void main(String[] args)
   {
       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.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() + " = true " +
                       temp5.isGreaterThan(temp1));
              
       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));                         
   }
}

I've searched other solutions on this site, and myprogramminglab accepts none of them. I'm at a bit of a loss and hope someone can help. Any ideas?

Explanation / Answer

I am putting the code below of whatever I understood from your question. i.e. You have created the code, but code lab analysis shows, that inputs needs to be taken from the keyboard, and appropriate output in specific format needs to come out. Please see to the code below, and if you want anything more, please update me.

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

Temperature.java

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 char getScale() {
       return scale;
   }
   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 TempuratureTest
{
public static void main(String[] args)
{
   System.out.println("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 untill user enter 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 third constructor:");
   Scanner sc1 = new Scanner(System.in).useDelimiter("\s");;
   double tmp1 = sc1.nextDouble(); // it will not leave untill user enter data.
   String scale1 = sc1.next(); // we can read specific data.
   Temperature obj4 = new Temperature(tmp1, 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.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() + " = true " +
temp5.isGreaterThan(temp1));
  
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));   
}
}

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

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: 23.0
getTempC = 23.0
getTempF = 73.4
getScale = C
Enter the temperature space F or C to create an object with the third constructor:72 F
getTempC = 22.2
getTempF = 72.0
getScale = F
Enter the temperature space F or C to create an object with the third constructor:22 F
getTempC = -5.6
getTempF = 22.0
getScale = F
Temperature 0.0°C < 100.0°C = true true
Temperature 0.0°C < 32.0°F = false false
Temperature 20.0°C > 212.0°F = false false
Temperature 20.0°C > 0.0°C = true true
Temperature 0.0°C = 32.0°F = true true
Temperature -40.0°C = -40.0°F = true true
Temperature 100.0°C = 212.0°F = true true