Monday, October 1, 2007

Temperature Conversion Program

This Temperature Conversion program is created for the request from fizkiz
Find fizkiz's request/specifications at:
https://www.blogger.com/comment.g?blogID=5133484865049964130&postID=7557509313208084077

/* >>and round to the nearest tenth of a degree
* ????what does it mean... give example...
*/

class Temperature{
float temperature_value;
boolean isFarenheit=false;
/*
From Fahrenheit to Celsius:--
subtract 32
Divide by 9
multiply by 5.

From Celsius to Fahrenheit:--
multiply by 9
Divide by 5
add 32.
*/

/*Default temperature_value is 0.0 and degree type is 'Celsius' */
Temperature(float temperature_reading,char scale){
temperature_value=temperature_reading;
if(scale=='c' || scale=='C')
isFarenheit=false;
else if(scale=='F' || scale=='f')
isFarenheit=true;
else{
System.out.println("Invalid Temperature scale type ..\n Exiting..");
System.exit(0);
}
}
Temperature(char scale){
temperature_value=0;
if(scale=='c' || scale=='C')
isFarenheit=false;
else if(scale=='F' || scale=='f')
isFarenheit=true;
else{
System.out.println("Invalid Temperature scale type ..\n Exiting..");
System.exit(0);
}
}
Temperature(float temperature_reading){
temperature_value=temperature_reading;
isFarenheit=false;
}
Temperature(){
temperature_value=0;
isFarenheit=false;
}
public float getTemperatureInCelsius(){
if(isFarenheit){
return (toCelsius(temperature_value));
}
return temperature_value;
}
public float getTemperatureInFarenheit(){
if(!isFarenheit){
return (toFarenheit(temperature_value));
}
return temperature_value;
}
public float toCelsius(float t_val){
return ((t_val-32)/9*5);
}
public float toFarenheit(float t_val){
return (t_val*9/5+32);
}
public boolean isEqual(Temperature tobject){
if(this.getTemperatureInCelsius()==tobject.getTemperatureInCelsius())
return true;
return false;
}
public boolean isGreater(Temperature tobject){
if(this.getTemperatureInCelsius() > tobject.getTemperatureInCelsius())
return true;
return false;
}
public boolean isLesser(Temperature tobject){
if(this.getTemperatureInCelsius() < tobject.getTemperatureInCelsius())
return true;
return false;
}
}
public class TemperatureTest{

java.util.Scanner sc;

int readTemperature(){
try{
sc=new java.util.Scanner(System.in);
System.out.println("Enter the temperature value:");
return Integer.parseInt(sc.nextLine());
}catch(Exception e){
e.printStackTrace();
System.out.println("Invalid input..");
terminate();
}
return 0;
}
char readScale(){
try{
sc=new java.util.Scanner(System.in);
System.out.println("Enter the Scale type, Enter C for celsius, F for Farenheit:");
return sc.nextLine().charAt(0);
}catch(Exception e){
e.printStackTrace();
System.out.println("Invalid input..");
terminate();;
}
return 'C';
}

Temperature createNewInstance(){
Temperature tempobject=new Temperature();
System.out.println("Enter 1 to use constructor with temperature and scale type");
System.out.println("Enter 2 to use constructor with temperature --default scale type is celsius");
System.out.println("Enter 3 to use constructor with scale type --default temperature is 0");
System.out.println("Enter 4 to use empty constructor --default temperature is 0 and default scale is celsius");
System.out.println("Any other entry to Exit");
try{
sc=new java.util.Scanner(System.in);
int option=Integer.parseInt(sc.nextLine());
switch (option){
case 1:
tempobject=new Temperature(readTemperature(),readScale());
break;
case 2:
tempobject=new Temperature(readTemperature());
break;
case 3:
tempobject=new Temperature(readScale());
break;
case 4:
tempobject=new Temperature();
break;
default:
terminate();
break;
}
}catch(Exception e){ terminate(); }
return tempobject;
}

TemperatureTest(){
Temperature t1,t2;
while(true){
try{
t1=createNewInstance();
System.out.println("Enter 6 to read temperature in Celsius");
System.out.println("Enter 7 to read temperature in Farenheit");
System.out.println("Enter 8 to create new Temperature object so you can compare" +
"\n their temperatures..");
System.out.println("Any other entry to Exit");
sc=new java.util.Scanner(System.in);
int option=Integer.parseInt(sc.nextLine());
switch (option){
case 6:
System.out.println(" Temperature in Celsius is:"+t1.getTemperatureInCelsius());
break;
case 7:
System.out.println(" Temperature in Farenheit is:"+t1.getTemperatureInFarenheit());
break;
case 8:
t2=createNewInstance();
compareTwoObjects(t1,t2);
break;
default:
terminate();
break;
}
System.out.println("-------------------------------------------------------");
}catch(Exception e){ terminate(); }
}
}

void compareTwoObjects(Temperature t1,Temperature t2){
//Equal comparision
if(t1.isEqual(t2))System.out.println("Both are Equal..");
//Lesser than comparision
if(t1.isLesser(t2))System.out.println("First Temperature is Lesser than second Temperature");
//Greater than comparision
if(t1.isGreater(t2))System.out.println("First Temperature is Greater than second Temperature");
}

void terminate(){
System.out.println("Terminating..");
System.exit(0);
}
public static void main(String args[]){
new TemperatureTest();
}
}

1 comment:

Anonymous said...

Hi, Can you do a program using netbean's (swing) GUI builder for the temperature conversion. Fahrenheit to Celsius.I am having a hard time trying to get the program to output the conversion of the temperature entered.