Java 状态转换表是如何工作的?
我想尝试制作一个状态机,但我对编程相当陌生。我读过一些关于状态转换表的内容,如果你输入了一些东西,它可以在状态之间切换。我不太明白它是如何工作的,以及它是如何转换为Java代码的。有人能解释一下吗?它实际上不是一台机器。在最简单的情况下,它是一个只包含一个名为Java 状态转换表是如何工作的?,java,state,transition,state-machine,Java,State,Transition,State Machine,我想尝试制作一个状态机,但我对编程相当陌生。我读过一些关于状态转换表的内容,如果你输入了一些东西,它可以在状态之间切换。我不太明白它是如何工作的,以及它是如何转换为Java代码的。有人能解释一下吗?它实际上不是一台机器。在最简单的情况下,它是一个只包含一个名为state的整数变量的程序。程序读取整数输入,并根据输入和状态的当前值设置新的状态值 if (state == 0 && input == 0) { state = 1; } if (state == 1 &
state
的整数变量的程序。程序读取整数输入,并根据输入和状态的当前值设置新的状态值
if (state == 0 && input == 0) {
state = 1;
}
if (state == 1 && input == 1) {
state = 2;
}
if (state == 2 && input == 2) {
state = 3;
}
if (state == 3 && input == 4) {
state = 4;
}
if (state == 4 && input == 8) {
state = 5;
}
// many more such statements to cover all combinations of state and input values
您可以使用
开关大小写
,或者更复杂的类层次结构或枚举
等,而不是如此长的if
语句链。但是基于上述内容,概念应该很清楚。状态机指的是跟踪相对于用户输入的状态的程序
我希望能够输入一个字符串,然后程序给出一个 消息和状态更改。例如:“做工作”,程序 说:“开始工作”并改变状态。过了一会儿,上面写着“完成” “正在工作”时,状态将变回。有点像一个非常小的 游戏 以你的评论为例,我们可以这样做
import java.util.Scanner;
enum GoingState {
TO_HOME,
TO_WORK,
TO_SHOP,
}
public class StateGame{
public static GoingState state = GoingState.TO_WORK;
public static void main(String args[]){
Scanner scanIn = new Scanner(System.in);
System.out.println("Where do you want to go?");
if(scanIn.nextLine().toLowerCase().contains("home")){
state = GoingState.TO_HOME;
System.out.println("Going home.");
}
else if(scanIn.nextLine().toLowerCase().contains("work")){
state = GoingState.TO_WORK;
System.out.println("Going to work.");
}
else if(scanIn.nextLine().toLowerCase().contains("shop")){
state = GoingState.TO_SHOP;
System.out.println("Going to the shop.");
}
else{
System.out.println("No valid input");
}
}
}
在上面的示例中,我使用enum
s来跟踪状态,但它也可以是一个int
或字符串,或跟踪状态的对象。当然,这是一个过度简化的例子
状态机通常使用状态转换映射(或表)跟踪哪些状态转换是可能的(我还没有这样做),这些映射告诉程序是否可以或应该从一种状态更改为另一种状态
状态图的一个非常简单的例子是,到您的状态只有一个线性过程,即在上面的例子中,只能从家到工作,工作到商店,然后再回来,而不能直接从商店到家,反之亦然。跟踪这一点可能相当简单,因为您可以将状态放在一个数组中,并检查用户想要去的位置是否高于或低于数组中的当前状态
我希望这能有所帮助。嗯。。。地图怎么样?由于OP实际上提到了一个“表”,我想知道你只是指静态的而不是通用的解决方案。我希望能够输入一个字符串,然后程序会给出一条消息,状态会发生变化。例如:“做工作”,程序说:“去工作”并改变状态。过了一段时间,它说“工作完毕”,状态又变了回来。有点像一个非常小的game@Paranaix我认为OP是一个非常初级的理解。请随意添加一个更好的答案。