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

I need to modify my code so that when the temperature adds that it converts to t

ID: 3629827 • Letter: I

Question

I need to modify my code so that when the temperature adds that it converts to the certain scale. For example if t1 = t2add(t3)
if t2 is Celsius and t3 is Kelvin then t3 would need to be converted to Celsius
or if t2 is Fahrenheit and t3 is Kelvin then t3 would need to be converted to Fahrenheit

and so on, this needs to be done with all the add, subtract, divide, and multiply methods as well as the equals method.

public class Temperature {


private double temperature;
private char scale;

public Temperature()
{
temperature = 0;
scale = ' ';

}


public Temperature(double temperature, char scale)
{
this.temperature=temperature;
this.scale=scale;
if (scale == 'K' && temperature < 0)
{
System.out.println("Kevlin can not be a negative number");
}
if (scale == 'C' && temperature < -273)
{
System.out.println("Celsius can not be less then -273");
}
if (scale =='F' && temperature < -459)
{
System.out.println("Fahrenheit can not be less then -459");
}

}



public Temperature toKelvin()
{
double converted_Temp;

if(scale == 'C')
{
converted_Temp=temperature+273;
Temperature temp = new Temperature(converted_Temp, 'K');
return temp;
}

if(scale == 'F')
{
converted_Temp=(int)(5/9*(temperature-32)+273);
Temperature temp = new Temperature(converted_Temp, 'K');
return temp;
}

return this;
}

public Temperature toCelsius()
{
double converted_Temp;

if(scale == 'K')
{
converted_Temp=temperature-273;
Temperature temp = new Temperature(converted_Temp, 'C');
return temp;
}

if(scale == 'F')
{
converted_Temp=((temperature-32)*5/9);
Temperature temp = new Temperature(converted_Temp, 'C');
return temp;
}

return this;
}

public Temperature toFahrenheit()
{
double converted_Temp;

if(scale == 'K')
{
converted_Temp=(9/5*(temperature-273)+32 );
Temperature temp = new Temperature(converted_Temp, 'F');
return temp;
}

if(scale == 'C')
{
converted_Temp=(9/5*temperature+32);
Temperature temp = new Temperature(converted_Temp, 'F');
return temp;
}

return this;
}


public Temperature add(Temperature n)
{
switch (scale)
{
case 'K':
case 'k':
n.toKelvin();
break;
case 'F':
case 'f':
n.toFahrenheit();
break;
case 'C':
case 'c':
n.toCelsius();
break;
}

Temperature answer = new Temperature();
answer.temperature= temperature + n.temperature;
return answer;

}

public Temperature subtract(Temperature n)
{
switch (scale)
{
case 'K':
case 'k':
n.toKelvin();
break;
case 'F':
case 'f':
n.toFahrenheit();
break;
case 'C':
case 'c':
n.toCelsius();
break;
}
Temperature answer = new Temperature();
answer.temperature= temperature - n.temperature;
return answer;
}

public Temperature multiply(Temperature n)
{
switch (scale)
{
case 'K':
case 'k':
n.toKelvin();
break;
case 'F':
case 'f':
n.toFahrenheit();
break;
case 'C':
case 'c':
n.toCelsius();
break;
}
Temperature answer = new Temperature();
answer.temperature= temperature * n.temperature;
return answer;
}

public Temperature divide(double d)
{
Temperature temp1 = this.toKelvin();
int new_temp=(int)(temp1.temperature/d);

return new Temperature(new_temp, 'K');
}


public boolean equals(Temperature n)
{
return this.temperature==n.temperature&&this.scale==n.scale;
}

@Override
public String toString()
{
return "Temperature= " + temperature + " scale=" + scale;
}


public void read()
{
System.out.println(this);
}
}

Explanation / Answer

You have the write logic, but toCelsius(), etc. return a new temperature.

public Temperature add(Temperature n)
{
switch (scale)
{
case 'K':
case 'k':
n = n.toKelvin();
break;
case 'F':
case 'f':
n = n.toFahrenheit();
break;
case 'C':
case 'c':
n = n.toCelsius();
break;
}

Temperature answer = new Temperature();
answer.temperature= temperature + n.temperature;
answer.scale = scale;
return answer;

}