You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sjiu/SmartAirConditioner.java

82 lines
2.3 KiB

/**
* 智能空调类
* 实现了Device和TemperatureAdjustable接口
*/
public class SmartAirConditioner implements Device, TemperatureAdjustable {
private String name;
private boolean on;
private int temperature;
private final int minTemp = 16;
private final int maxTemp = 30;
public SmartAirConditioner(String name) {
this.name = name;
this.on = false;
this.temperature = 25; // 默认温度25度
}
@Override
public String getName() {
return name;
}
@Override
public void turnOn() {
if (!on) {
on = true;
System.out.println(name + " 空调已开启,当前温度: " + temperature + "°C");
}
}
@Override
public void turnOff() {
if (on) {
on = false;
System.out.println(name + " 空调已关闭");
}
}
@Override
public boolean isOn() {
return on;
}
@Override
public void increaseTemperature(int degree) {
if (on && temperature + degree <= maxTemp) {
temperature += degree;
System.out.println(name + " 温度已增加到: " + temperature + "°C");
} else if (temperature + degree > maxTemp) {
System.out.println(name + " 已达到最高温度: " + maxTemp + "°C");
temperature = maxTemp;
}
}
@Override
public void decreaseTemperature(int degree) {
if (on && temperature - degree >= minTemp) {
temperature -= degree;
System.out.println(name + " 温度已降低到: " + temperature + "°C");
} else if (temperature - degree < minTemp) {
System.out.println(name + " 已达到最低温度: " + minTemp + "°C");
temperature = minTemp;
}
}
@Override
public void setTemperature(int temperature) {
if (on) {
if (temperature >= minTemp && temperature <= maxTemp) {
this.temperature = temperature;
System.out.println(name + " 温度已设置为: " + temperature + "°C");
} else {
System.out.println(name + " 温度超出范围,请设置在 " + minTemp + "-" + maxTemp + "°C 之间");
}
}
}
@Override
public int getCurrentTemperature() {
return temperature;
}
}