嗨,你好。₍˄·͈༝·͈˄*₎◞ ̑̑
我是一个初学者啊,哪里写的不好可以提出来,别喷啊。₍˄·͈༝·͈˄*₎◞ ̑̑
昨天晚上简单的看了一下状态机教程,尝试用状态机写个洗衣机清洗工作的程序。ε(*・ω・)_/゚:・☆
因为程序不是太复杂,所以注释比较少,我也不多说了。ʕ ᵔᴥᵔ ʔ
Main.java
import java.util.*;
public class Main {
public static void main(String[] args) {
//洗衣机功能类
LaundryFeature launfey_feature = new LaundryFeature(2);
//当前状态
int current_status = 0;
//结束运行
boolean finish_operation = false;
while(true)
{
switch(current_status)
{
//自检
case 0:
launfey_feature.inspection();
if(launfey_feature.malfunction())
{
current_status = 1;
}
else{
current_status = 2;
}
break;
//报警
case 1:
launfey_feature.give_alarm();
finish_operation = true;
break;
//空闲
case 2:
if(launfey_feature.leisure())
{
current_status = 3;
}
break;
//倒计时
case 3:
launfey_feature.countdown();
current_status = 4;
break;
//加水
case 4:
launfey_feature.add_water();
current_status = 5;
break;
//清洗
case 5:
launfey_feature.cleaning();
current_status = 6;
break;
//放水
case 6:
launfey_feature.discharge_water();
if(launfey_feature.get_cleanse_number() < launfey_feature.get_specify_number())
{
current_status = 4;
}
else{
current_status = 7;
}
break;
//甩干
case 7:
launfey_feature.shake_dry();
current_status = 8;
break;
//洗衣结束
case 8:
launfey_feature.come_end();
finish_operation = true;
break;
}
if(finish_operation)
{
System.out.println("洗衣机停止运作");
break;
}
}
}
}
LaundryFeature.java
import java.util.Timer;
import java.util.TimerTask;
import java.sql.RowId;
import javax.sql.RowSet;
import java.util.Scanner;public class LaundryFeature
{
//是否错误
private boolean isError = false;
//用户要求的清洗次数
private int specify_cleanse_number;
//清洗次数
private int cleanse_number = 0;
public LaundryFeature(int number)
{
//设置需要清洗衣物的次数
specify_cleanse_number = number;
}
//自检
public void inspection()
{
//我洗衣机质量那么好,怎么可能会出问题呢:)。
isError = false;
System.out.println("开始检查洗衣机是否存在故障。\n检查结束。");
}
//报警
public void give_alarm()
{
if(isError == false)
{
System.out.println("出现故障,无法正常运行。");
}
}
//空闲
public boolean leisure()
{
//这里需要用户自行输入进行选择,太麻烦了,就直接都确定洗衣吧。
if(cleanse_number < specify_cleanse_number)
{
System.out.println("您已选择清洗功能,启动倒计时。");
return true;
}
else{
System.out.println("您已取消清洗。");
return false;
}
}
//倒计时
public void countdown()
{
int anticipate_time = 5;//预计倒计时
int time = anticipate_time; //当前倒计时数
for(int i = 0; i < anticipate_time; i++)
{
System.out.println("倒计时: " + time);
time -= 1;
}
}
//加水
public void add_water()
{
System.out.println("开始加水。");
}
//清洗
public void cleaning()
{
cleanse_number += 1;
System.out.println("加水完成,开始进行第" + cleanse_number + "次清洗。");
}
//放水
public void discharge_water()
{
System.out.println("清洗完成,开始放水。\n已完成第" + cleanse_number + "次清洗。");
}
//甩干
public void shake_dry()
{
System.out.println("开始甩干。\n甩干结束。");
}
//洗衣结束
public void come_end()
{
System.out.println("清洗结束,感想您使用本产品与对于本产品的支持。");
}
//获取错误状态
public boolean malfunction()
{
return isError;
}
//获取清洗次数
public int get_cleanse_number()
{
return cleanse_number;
}
//获取用户要求的清洗次数
public int get_specify_number()
{
return specify_cleanse_number;
}
}