【JAVA】洗衣机清洗工作(简单的试了试状态机:))

本文描述了一个初学者使用状态机概念编写了一个简单的洗衣机清洗工作程序,展示了状态转移逻辑,包括自检、报警、清洗等步骤。
摘要由CSDN通过智能技术生成

嗨,你好。₍˄·͈༝·͈˄*₎◞ ̑̑

我是一个初学者啊,哪里写的不好可以提出来,别喷啊。₍˄·͈༝·͈˄*₎◞ ̑̑

昨天晚上简单的看了一下状态机教程,尝试用状态机写个洗衣机清洗工作的程序。ε(*・ω・)_/゚:・☆

因为程序不是太复杂,所以注释比较少,我也不多说了。ʕ ᵔᴥᵔ ʔ

dc25724842304fb99b111318b33eb576.jpg

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;
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值