Please help me with my program
Hi, I'm new to programming and I have a simple Java program I am trying to run where I convert Celsius to Fahrenheit and vice versa. My program compiles using jgrasp, but I do not get the correct figures. Can anyone help me out? Below is my driver and class respectively.
Code :
import java.util.Scanner;
public class Driver
{
public static void main(String args[])
{
// Declare variables for user input
double degrees;
double Celsius;
String scale;
String endScale;
double getCelsius;
double getFahrenheit;
// Create a Scanner object to read from the keyboard
Scanner keyboard = new Scanner (System.in);
// Get the temperature and scale from user
System.out.print("Enter the temperature: ");
degrees = keyboard.nextDouble();
scale = keyboard.nextLine().trim();
// Declare and instantiate an object reference variable
Temperature outsideTemp = new Temperature();
// Set the outside temperature based on the user input
if (scale.equalsIgnoreCase("C"))
outsideTemp.setCelsius(degrees);
else
outsideTemp.setFahrenheit(degrees);
System.out.print("How would you like the temperature displayed (C or F)?");
endScale = keyboard.nextLine();
// Get the scale to display the temperature from the user
if (endScale.equalsIgnoreCase("C"))
System.out.print("The temperature is " + outsideTemp.getCelsius());
else
System.out.print("The temperature is " + outsideTemp.getFahrenheit());
// Display the temperature based on the user's desired scale
System.out.print(" degrees " + endScale);
}
}
Code :
public class Temperature
{
// Instance variable
private double degreesKelvin; // degrees in Kelvin
double Celsius; // degrees in Celsius
double Fahrenheit;
// Constructor method: initialize degreesKelvin to zero
public Temperature()
{
degreesKelvin = 0;
}
// Convert and save degreesCelius in the Kelvin scale
public void setCelsius(double Celsius)
{
degreesKelvin = Celsius + 273.16;
}
// Convert degreesKelvin to Celsius and return the value
public double getCelsius()
{
Celsius = degreesKelvin - 273.16;
return Celsius;
}
// Convert and save degreesFahrenheit in the Kelvin scale
public void setFahrenheit(double Fahrenheit)
{
degreesKelvin = (( 5 / 9 ) * (Fahrenheit - 32)) + 273.16;
}
// Convert degreesKelvin to Fahrenheit and return the value
public double getFahrenheit()
{
Fahrenheit = ((degreesKelvin - 273.16) * (9 / 5 )) + 32;
return Fahrenheit;
}
}
Re: Please help me with my program
It' not necessary to keep track of 3 different temparatures, you only need to keep track of one of them and then you can compute the rest.
Code :
private double degreesKelvin;
public Temperature()
{
degreesKelvin = 0;
}
public void setFahrenheit(double degrees)
{
degreesKelvin = 5*(degrees - 32)/9 + 273.16;
}
public void setCelsius(double degrees)
{
degreesKelvin = degrees + 273.16;
}
public double getFahrenheit()
{
return 9*(degreesKelvin-273.16)/5+32;
}
public double getCelsius()
{
return degreesKelvin - 273.16;
}
Re: Please help me with my program
helloworlds modified code works around this, but based upon your original code make sure to add decimals or casts to all your numbers, otherwise its doing integer math and not floating point math...for example, the following code will print this:
0.0
0.55555
Code :
double test = 5/9;
System.out.println(test);
test = 5.0/9.0;
System.out.println(test);