在处理开关案例陈述中使用枚举

时间:2018-07-01 08:20:51

标签: enums processing

我试图在处理中使用“枚举”,以便在“开关盒”陈述中使用它。

我正在处理3.3.6。 我将“枚举”语句放置在名为“ Status.java”的新选项卡中。 我在主选项卡的enum iteslf上声明了。 我无法初始化用值创建的枚举。

这是我的代码:

“ Satus.java”标签:

enum State {A,B,C};

“主要”标签:

State state1=A;

void setup()
{

}

void draw()
{  
  println(state1);  
  switch (state1)
  {
      case A:
        println("A");
      case B:
        println("B");
      case C:
        println("C");
  }
}

2 个答案:

答案 0 :(得分:0)

首先,您需要告诉状态选项卡它是一个类:

static class status {
   enum State {A,B,C};
}

在处理过程中,您将需要使用静态类令牌,而不是像Java中那样使用公共类


目前, main 类不知道什么是 State 对象。因此,处理无法解析/初始化变量 state1

告诉它在 status 类中查找类型,如下所示:

Status.State state1 = Status.State.A;

最后,不要忘了在switch语句的每种情况之后添加 break; ,否则A的匹配项也会打印B和C(switch语句掉线)。

    switch (state1) {
        case A :
            println("A");
            break;
        case B :
            println("B");
            break;
        case C :
            println("C");
            break;
    }

答案 1 :(得分:0)

分配变量时,您可能想显式访问State.A。 例如。

State state1=State.A;

代替

State state1=A;

,请记住使用break语句,否则将遇到所有情况。 这是您在单个草图文件中的代码的基本版本:

enum State {A,B,C};

State state1=State.A;

void setup()
{

}

void draw()
{  
  println("state1",state1);
  switch (state1)
  {
      case A:
        println("A");
        break;
      case B:
        println("B");
        break;
      case C:
        println("C");
        break;
      default:
        println("default: undefined state");
        break;
  }
}