定义类——Thermometer表示温度计

本文介绍了一个名为Thermometer的Java类,用于表示温度计,包含私有变量unit(存储摄氏度或华氏度)和temperature(存储温度值),以及无参和带参构造器、switchUnit方法进行单位转换和getter方法获取值。实例展示了如何在主类中创建并操作这些温度计对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义一个类Thermometer表示温度计,Thermometer类的要求如下:

  • 一个私有的char类型的成员变量unit表示当前温度计的温度单位,该变量有2个值,F表示华氏度,C表示摄氏度;
  • 一个私有的double类型变量temperature表示温度计当前温度数值;
  • 一个无参数的构造器,默认温度值为0.0,默认的温度单位为摄氏度;
  • 一个带参数的构造器,构造对象时指定温度值和温度单位;
  • 定义一个公有方法,switchUnit(),该方法将改变温度计的温度单位,并将温度值也换算为新单位下的值,比如当前单位为摄氏度,switchUnit()将变为华氏度,并将温度值temperature也换算为华氏度的值;
  • 为两个成员变量定义getter方法;

华氏度=(摄氏度×9.0/5)+32 **
** 摄氏度=(华氏度-32)×5/9

定义Thermometer类:

class Thermometer{
}

Main类代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Thermometer t1 = new Thermometer();
        t1.switchUnit(); //t1改变温度单位
        Scanner scanner = new Scanner(System.in);
                //输入温度单位和温度值
        char unit = scanner.next().charAt(0);
        double temperature = scanner.nextDouble();
        System.out.printf("Thermometer t1's temperature is %.2f"+t1.getUnit()+"%n",t1.getTemperature());
        Thermometer t2 = new Thermometer(temperature,unit);
        System.out.printf("Thermometer t2's temperature is %.2f"+t2.getUnit()+"%n",t2.getTemperature());
        t2.switchUnit(); //t2改变温度单位
        System.out.printf("Thermometer t2's temperature is %.2f"+t2.getUnit()+"%n",t2.getTemperature());
    }
}

输入样例:

输入温度的单位和温度值,比如 F 59.5 表示59.5华氏度

F 59.5

输出样例:

输出温度计当前的温度值(包含单位),

Thermometer t1's temperature is 32.00F
Thermometer t2's temperature is 59.50F
Thermometer t2's temperature is 15.28C

闲话少叙,咱们直接走流程:定义一个又一个

定义属性:

一个成员变量有多个值

 这时候,我们的成员变量unit需要两个值。怎么办,还要依情况而定改变unit的值

你是否想到了什么?没错,就是我们学习的数组。

java里的数组

java里面也有数组,不过我们今天不详细展开,提到的点仅供这道题用就足够。

java里面的数组格式:

int[] a = {1,2,3,4,5}//创建数组,并初始化

与c不同的是,【】可以写在类型前面,挺好理解:a是一个变量名,类型是int[ ],int[ ],表示是一个元素为int型的数组。

这儿,我们在定义类时,在创建一个数组,然后根据情况把数组里的值赋给unit

代码如下:

 private  char unit;
 char[] AT = {'C','F'};//单个字符用单引号

继续定义其他成员变量:

 private double temperature;

定义构造器:
 

无参构造器中,默认单位unit是摄氏度即把数组的第一个元素赋值给unit

 public Thermometer()//构造器也是方法,少不了函数调用操作符()
    {
        temperature = 0.0;
        unit = AT[0];
    }//构造器是特殊方法,无返回类型

 有参数的构造器,注意传参个数和顺序:

public  Thermometer(double temperature1,char unit1)//指定温度和单位,意味着new在操作时传了值,有参构造器肯定接收
    {
        temperature = temperature1;
        unit = unit1;
    }

定义方法:

改变温度和相应单位

如果是摄氏温度就变成华氏温度,反之亦然。------明显的判断语句

对应的temperature也发生转换,如果是摄氏温度就变成华氏温度。

大概思路有了,咱们看看细节:

 public void switchUnit()//无返回记得写void
    {
        if(unit == AT[0])//摄氏温度->华氏温度
        {
            unit = AT[1];
            temperature = (temperature * 9.0 / 5) + 32;
        }
        else if(unit == AT[1])//华氏温度->摄氏温度
        {
            unit = AT[0];
            temperature = (temperature - 32) * 5 / 9;
        }

    }

 为两个成员变量定义getter方法

getter方法一个句话:return无参

public double getTemperature()
    {
        return  temperature;
    }
    public char getUnit()
    {
        return unit;
    }

完整代码参考:
 

class Thermometer{
    private double temperature;
    private  char unit;
    char[] AT = {'C','F'};
    public Thermometer()
    {
        temperature = 0.0;
        unit = AT[0];
    }
    public  Thermometer(double temperature1,char unit1)
    {
        temperature = temperature1;
        unit = unit1;
    }
    public void switchUnit()
    {
        if(unit == AT[0])
        {
            unit = AT[1];
            temperature = (temperature * 9.0 / 5) + 32;
        }
        else if(unit == AT[1])
        {
            unit = AT[0];
            temperature = (temperature - 32) * 5 / 9;
        }

    }
    public double getTemperature()
    {
        return  temperature;
    }
    public char getUnit()
    {
        return unit;
    }

}

 题外话:定义类的概要知识入口 

定义类:定义一个类Square表示正方形-CSDN博客

定义类的题目与知识就到这儿,多定义几道,其中规则自会熟稔于心。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值