2014-09-27 36 views
0

我想切换状态,从开始状态开始。但是,当我输入要转入失败状态或转入状态的输入时,两者都不起作用。我曾尝试在代码中添加中断,但恐怕没有任何影响。其他解决方案?枚举和case语句。即使中断也不切换

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; 
    int number; 
    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"); 
       number = input.nextInt(); 
       if(number == 1) 
       { 
        state = State.GO_STATE; 
        System.out.print(" Go hello"); 

       } 
       else if(number == 2) 
       { 
        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"); 





    } 

    } 
+2

你是否期待如果你设置了'state',那么它会自动进入下一个状态?如果这就是你的想法,那不会发生什么。 'switch'为给定状态执行语句,然后退出。然后,如果没有任何信息告诉它回到'switch',它就再也不会查看'state'。我怀疑你想添加一个循环,但没有很多关于你需要完成的细节。如果你添加一个循环,确保它不是一个无限循环。 – ajb 2014-09-27 00:13:50

回答

1

您已经在您的switch语句的内部,当你改变的state值,如图所示是this question,一旦找到匹配被执行的情况下和控制流switch语句的结束。

我不完全确定你想要完成什么,但是如果你想更新state并继续输入开关,你将不得不添加一个循环。