import java.util.*;
class Temperature
{
private float temprature_value;//温度值
private char temprature_kind;//温度单位
public float GetTempratureValue()//为方便测试,自定义返回温度值,非文档要求范围
{
return this.temprature_value;
}
public char GetTempratureKind()//为方便测试,自定义返回温度单位,非文档要求范围
{
return this.temprature_kind;
}
public Temperature()//默认构造函数
{
this.temprature_value = 0;
this.temprature_kind = 'C';
}
public Temperature(float value, char kind)//通过参数实例化的构造函数
{
this.temprature_value = value;
this.temprature_kind = kind;
}
public float GetCelsius(float degreesF)//转换成摄氏度
{
return 5 * (degreesF - 32) / 9;
}
public float GetFahrenheit(float degreesC)//转换成华氏度
{
return (9 * (degreesC) / 5) + 32;
}
public void SetTemperatureValue(float new_value)//设置温度值
{
this.temprature_value = new_value;
}
public void SetTempratureKind()//设置单位
{
if (this.temprature_kind == 'C')
{
this.temprature_kind = 'F';
}
else
{
this.temprature_kind = 'C';
}
}
public void SetAll(float new_value,char new_kind)//同时设置温度值和单位
{
this.temprature_value = new_value;
this.temprature_kind = new_kind;
}
public boolean IsEqual(Temperature otherTemprature)//比较两个温度是否相等
{
return this.GetCelsius(this.temprature_value)==this.GetCelsius(otherTemprature.temprature_value);
}
public boolean IsLarger(Temperature otherTemprature)
{
if(this.GetCelsius(this.temprature_value)>otherTemprature.GetCelsius(otherTemprature.temprature_value))
{
return true;
}
else
{
return false;
}
}//比较第一个温度是否大于第二个温度
public boolean IsSmaller(Temperature otherTemprature)
{
if(this.GetCelsius(this.temprature_value)<otherTemprature.GetCelsius(otherTemprature.temprature_value))
{
return true;
}
else
{
return false;
}
}//比较第一个温度是否小于第二个温度
public int CompareTo(Temperature otherTemprature)
{
if (this.IsEqual(otherTemprature))
{
return 0;//相等
}
else if (this.IsLarger(otherTemprature))
{
return 1;//第一个温度大于第二个
}
else
{
return -1;//第一个温度小于第二个
}
}//自定义比较方法,非文档要求
}
class Temperature_Project
{
public static void PrintTempratureInfo(Temperature t)//打印温度信息
{
System.out.print(t.GetTempratureValue());
System.out.print(t.GetTempratureKind());
System.out.println();
}
public static void PrintAlterExceptionInfo(Temperature t)//打印修改异常信息
{
System.out.println("输入字符非法,值修改失败");
System.out.print("温度仍为");
PrintTempratureInfo(t);
}
public static void PrintCompareResult(int result)//打印比较结果
{
if(result==0)
{
System.out.println("测试比较温度方法,两个温度相等");
}
else if(result==1)
{
System.out.println("测试比较温度方法,第一个温度大于第二个温度");
}
else
{
System.out.println("测试比较温度方法,第一个温度小于第二个温度");
}
}
public static void main(String[] args)
{
//测试默认构造函数
Temperature t1=new Temperature();
System.out.print("测试默认构造函数,t1的温度是");
PrintTempratureInfo(t1);//打印t1温度信息
//测试带参数的构造函数
Temperature t2 = new Temperature(20.9f, 'C');//摄氏度
Temperature t3 = new Temperature(110.9f,'F');//华氏度
System.out.print("测试带参数构造函数,t2的温度是");
PrintTempratureInfo(t2);
System.out.print("测试带参数构造函数,t3的温度是");
PrintTempratureInfo(t3);
Scanner scanner=new Scanner(System.in);
try
{
//测试摄氏转华氏的方法
System.out.print("测试摄氏转华氏的方法,请输入摄氏温度值");
float valc=Float.parseFloat(scanner.next());
Temperature tc=new Temperature(valc,'C');
System.out.println("转成华氏度是"+tc.GetFahrenheit(valc)+"F");
//测试华氏转摄氏方法
System.out.print("测试华氏转摄氏的方法,请输入华氏温度值");
float valf=Float.parseFloat(scanner.next());
Temperature tf=new Temperature(valf,'F');
System.out.println("转成华氏度是"+tf.GetCelsius(valf)+"F");
}
catch (NumberFormatException Ex)
{
System.out.println("非法输入");
}
//测试修改温度值的方法SetTemperatureValue(float new_value)
System.out.print("请输入t1的温度值");
try
{
float newvalue=Float.parseFloat(scanner.next());//将用户的输入转成float
t1.SetTemperatureValue(newvalue);//调用修改温度方法
System.out.print("测试修改温度的方法 t1的温度被修改成");
PrintTempratureInfo(t1);
}
catch(NumberFormatException Ex)
{
PrintAlterExceptionInfo(t1);
}
t1.SetTempratureKind();
System.out.print("测试修改温度单位的方法,t1的温度被修改成");
PrintTempratureInfo(t1);
//测试同时修改温度值与温度单位的方法SetAll(float new_value,char new_kind)
try
{
System.out.println("请输入温度值");
float v=Float.parseFloat(scanner.next());
System.out.println("请输入单位");
char[] c=scanner.next().toUpperCase().toCharArray();//将输入转成大写,再转成字符
if(c[0]=='C'||c[0]=='F')
{
t1.SetAll(v,c[0]);
System.out.print("测试同时修改温度值与温度单位的方法,t1的温度被修改成");
PrintTempratureInfo(t1);
}
else
{
PrintAlterExceptionInfo(t1);
}
}
catch(NumberFormatException Ex)
{
PrintAlterExceptionInfo(t1);
}
//测试比较温度大小的方法
Temperature t4;//待比较的第一个温度
Temperature t5;//待比较的第二个温度
try
{
System.out.println("请输入第一个温度的值");
float v1=Float.parseFloat(scanner.next());
System.out.println("请输入第一个温度的单位");
char[] c1=scanner.next().toUpperCase().toCharArray();
if(c1[0]=='C'||c1[0]=='F')
{
t4=new Temperature(v1,c1[0]);
}
else
{
System.out.println("输入非法字符,现在调用默认构造函数");
t4=new Temperature();
System.out.print("温度初始化为");
PrintTempratureInfo(t4);
}
try
{
System.out.println("请输入第二个温度的值");
float v2=Float.parseFloat(scanner.next());
System.out.println("请输入第二个温度的单位");
char[] c2=scanner.next().toUpperCase().toCharArray();
if(c2[0]=='C'||c2[0]=='F')
{
t5=new Temperature(v2,c2[0]);
int result=t4.CompareTo(t5);//开始比较,测试IsEqual(Temperature otherTemprature),IsLarger(Temperature otherTemprature),IsSmaller(Temperature otherTemprature)
PrintCompareResult(result);//打印比较结果
}
else
{
System.out.println("输入非法字符,现在调用默认构造函数");
t5=new Temperature();
System.out.print("温度初始化为");
PrintTempratureInfo(t5
- 1
- 2
前往页