Java 枚举不包含for switch语句
我正在尝试切换状态。我第一次出发是在start_状态。然后,我会提示用户是进入FAIL_状态还是go_状态。然而,无论他们是否为fail(为fail_状态)键入“go”(为go_状态),其他情况都不会被激活。这个问题的解决方案是什么Java 枚举不包含for switch语句,java,enums,Java,Enums,我正在尝试切换状态。我第一次出发是在start_状态。然后,我会提示用户是进入FAIL_状态还是go_状态。然而,无论他们是否为fail(为fail_状态)键入“go”(为go_状态),其他情况都不会被激活。这个问题的解决方案是什么 import java.util.*; public class dfa { static State state; public enum State { START_STATE, GO_STATE,
import java.util.*;
public class dfa {
static State state;
public enum State
{
START_STATE,
GO_STATE,
FAIL_STATE,
};
dfa(State state)
{ state = this.state;}
/**
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String line;
state = State.START_STATE;
switch(state)
{
case START_STATE:
System.out.print("In start state \n ");
System.out.println("Which state you want to go to? \n");
line = input.next();
if(line.equals("go"))
{
state = State.GO_STATE;
System.out.print(" Go hello");
}
else if(line.equals("fail"))
{
state = State.FAIL_STATE;
System.out.println(" Fail hello ");
}
break;
case FAIL_STATE:
System.out.println("fail state");
break;
case GO_STATE:
System.out.println("go state");
break;
default:
System.out.println("Default");
break;
}
System.out.println("made it here");
}
}
输出:
(When "go" is typed)
Go hello
made it here
(When "fail" is typed)
Fail hello
made it here
(键入“go”时)
打招呼
在这里
(键入“失败”时)
失败你好
在这里
您的
案例开始\u状态
没有中断
。然后它将始终转到下一个案例,该案例为案例失败\u状态:
开关有断路
您的开关盒应遵循此顺序
switch(condition){
case con1:
// do something
break;
case con2:
// do something
break;
default:
// do something
break;
}
在START_状态下,您只是忘记了一个中断
:
case START_STATE:
System.out.print("In start state \n ");
System.out.println("Which state you want to go to? \n");
line = input.next();
if(line.equals("go")) {
state = State.GO_STATE;
System.out.print(" Go hello");
} else if(line.equals("fail")) {
state = State.FAIL_STATE;
System.out.println(" Fail hello ");
}
break; // <-- here
案例开始\u状态:
System.out.print(“处于启动状态\n”);
System.out.println(“您想进入哪个状态?\n”);
line=input.next();
如果(行等于(“go”)){
state=state.GO\u state;
系统输出打印(“Go hello”);
}else if(行等于(“失败”)){
状态=state.FAIL\u状态;
System.out.println(“Fail hello”);
}
中断;// 在案例开始\u状态
的末尾缺少break
语句,因此它正好进入下一个案例
:
case START_STATE:
System.out.print("In start state \n ");
System.out.println("Which state you want to go to? \n");
line = input.next();
if(line.equals("go"))
{
state = State.GO_STATE;
System.out.print(" Go hello");
}
else if(line.equals("fail"))
{
state = State.FAIL_STATE;
System.out.println(" Fail hello ");
}
break; // Missing from OP
添加了中断,但由于某种原因,程序不会进入任何一个州。