public class Person {
public static final int WORK = 0;
public static final int PLAY = 1;
public static final int SLEEP = 2;
public static final int FUN = 3;
public int state;
public void WorkToPlay() {
state = 1;
System.out.println("work to play");
}
public void PlayToSleep() {
state = 2;
System.out.println("play to sleep");
}
public void SleepToFun() {
state = 3;
System.out.println("sleep to fun");
}
public void FunToWork() {
state = 0;
System.out.println("fun to work");
}
public void setState(int end) {
if (end > FUN || end < WORK) {
System.out.println("end is wrong state");
return;
}
if (end - 1 > state) {
setState(end - 1);
} else if (end - 1 == state || state == end + 3) {
// end在递归中不断减小 但在这里就不会继续递归减小了 因为这里什么也没做 所以下面的else if没机会执行
// 除非是初始判断
} else if (end == state) {
System.out.println("do nothing");
return;
} else if (end < state) {
// System.out.println("<");
setState(end - 1 >= 0 ? end - 1 : end + 3);
}
// if (state == end - 1 || state==end+3) {
System.out.println(state + " to " + end);
switch (state) {
case WORK:
WorkToPlay();
break;
case PLAY:
PlayToSleep();
break;
case SLEEP:
SleepToFun();
break;
case FUN:
FunToWork();
break;
default:
break;
}
// }
}
public static void main(String[] args) {
Person a = new Person();
a.state = 2;
a.setState(1);
System.out.println("---");
a.setState(0);
System.out.println("---");
a.setState(3);
}
}
分享到:
相关推荐
状态机是一种设计模式,常用于控制系统的流程或行为,它定义了一组状态以及在不同条件下的状态转换。在8051单片机上实现状态机,可以有效地组织程序结构,提高代码的可读性和可维护性。Keil是常用的8051单片机开发...
C# 状态机 Stateless 详解 C# 状态机 Stateless 是一种轻量级的状态机库,能够帮助开发者轻松地创建状态机,实现状态之间的切换。下面是对 C# 状态机 Stateless 的详细介绍。 什么是状态机? 状态机(Finite ...
StateMachine 状态机机制深入解析 StateMachine 状态机机制是指在软件开发中,使用状态机来描述和处理复杂的业务流程。状态机机制可以帮助开发者简化状态机的开发过程,并且可以提高代码的可读性和维护性。在 ...
在这个名为“状态机实验报告1”的实验中,我们关注的是状态机的设计和实现,特别是Moore型和Mealy型状态机的区别与应用。 Moore状态机与Mealy状态机是状态机的两种基本类型。Moore状态机的输出只取决于当前状态,而...
状态机在单片机编程中扮演着至关重要的角色,它是一种设计模式,广泛应用于各种编程语言,包括C语言。状态机的核心概念在于通过定义不同状态、条件、动作和次态来组织程序逻辑,使得程序执行更加高效、可读性强且...
通用有限状态机(FSM: Finite-state machine)自动代码生成器. 可以根据配置文件,自动生成状态机代码(C++)。配置文件中只需要定义状态,跃迁条件。然后完善每个状态的动作即可。省去开发过程中手写状态机的麻烦。...
在这个项目中,“简单状态机控制步进电机”是利用状态机的设计思想来实现对步进电机的精确控制。状态机是一种用于描述系统行为的模型,它按照预定义的一系列状态进行转换,每个状态对应于特定的操作或行为。 首先,...
在编程领域,状态机是一种非常重要的设计模式,它被广泛应用于各种复杂的逻辑控制流程中。在C#中,我们可以利用面向对象的特性来实现状态机,以管理对象在不同状态之间的转换。本篇将深入探讨如何在C#中实现状态机,...
### VHDL中的有限状态机设计概述 #### 一、有限状态机(FSM)的重要性与优点 有限状态机(Finite State Machine, FSM)是一种被广泛应用于数字逻辑设计中的模型,尤其在VHDL语言中有着非常重要的地位。在设计复杂的...
状态机是一种设计模式,常用于处理具有多个状态和转换规则的系统。在嵌入式开发中,它尤其重要,因为这种简洁的模型可以帮助管理复杂的控制流程,提高代码的可读性和可维护性。本资源“C语言嵌入式状态机架构(含C...
在数字系统设计中,状态机是一种非常重要的构造模块,它用于控制系统的流程和行为。VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是用于硬件描述的语言,常用于FPGA和ASIC设计。本篇...
"状态机在订单状态管理中的应用及 COLA StateMachine 的介绍" 在订单状态管理中,状态机模式是一种常用的解决方案,但是在实际项目中,状态机的使用率并没有想象中那么高。笔者在电商领域进行后端开发时,发现了...
在IT领域,有限状态机(Finite State Machine, FSM)是一种重要的设计模式,它在软件工程、计算机科学以及许多其他领域都有广泛的应用。本主题“一个有趣的有限状态机的JAVA实现”将带你探索如何利用Java语言构建一...
《C语言高效有限状态机(FSM)详细设计说明书》 有限状态机(Finite State Machine, FSM)是一种模型理论,它将一个系统的行为描述为一系列可切换的状态,以及这些状态之间的转换。这种模型在IT领域中广泛应用,特别...
状态机在计算机科学中是一种建模工具,常用于描述系统的行为和状态转换。在TCP/IP协议栈中,状态机被广泛应用于理解网络连接的不同阶段,如TCP连接的三次握手和四次挥手过程。TCP(传输控制协议)是互联网协议的一...
单片机多按键状态机的实现是嵌入式系统中常用的一种处理多个按键输入的方法,尤其在资源有限的环境中,如消费电子产品、智能家居设备等。本文将深入探讨如何设计和实现一个这样的系统。 首先,我们需要了解单片机。...
### 状态机知识与C语言实现详解 #### 一、状态机基础知识 **状态机**(Finite State Machine, FSM)在软件工程中是一种重要的抽象模型工具,它被广泛应用于各种场景中,例如用户界面的设计、协议栈的开发以及游戏AI...
可通信状态机(CSM)是一个基于JKI状态机(JKISM)的LabVIEW应用框架。它遵循 JKISM 的模式,扩展了关键词以描述模块之间的消息通信,包括同步消息、异步消息、状态订阅/取消订阅等概念! 可通信状态机(CSM)是一个...
而"钟桦VHDL第一次作业课件.pdf"则可能是钟教授关于VHDL状态机设计的课件,可能涵盖了状态机的基本概念,如何描述状态机,以及如何实现序列检测器的具体步骤。 通过学习这部分内容,学生不仅能掌握VHDL的基础知识,...
状态机是一种重要的设计模式,广泛应用于软件工程、计算机科学、电子工程和其他领域。它通过定义一组状态以及在这些状态之间转换的规则来描述系统的行为。理解标准状态机的概念及其应用对于开发高效、可靠且可维护的...