Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 枚举不包含for switch语句_Java_Enums - Fatal编程技术网

Java 枚举不包含for switch语句

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,

我正在尝试切换状态。我第一次出发是在start_状态。然后,我会提示用户是进入FAIL_状态还是go_状态。然而,无论他们是否为fail(为fail_状态)键入“go”(为go_状态),其他情况都不会被激活。这个问题的解决方案是什么

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

添加了中断,但由于某种原因,程序不会进入任何一个州。