Использование перечисления в обработке состояния регистра переключателя - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь использовать «enum» при обработке, чтобы использовать его внутри статута «switch case».

Я работаю над обработкой 3.3.6. Я поместил элемент enum в новую вкладку с именем «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 голосов
/ 02 июля 2018

Возможно, вы захотите получить прямой доступ к 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;
  }
}
0 голосов
/ 01 июля 2018

Во-первых, вы должны сообщить вкладке status , что это класс:

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

При обработке вам нужно будет использовать статический класс токен, а не публичный класс , как в Java.


В настоящий момент класс main не знает, что такое объект State . Вот почему Обработка не может разрешить / инициализировать вашу переменную state1 .

Скажите, чтобы он искал тип в классе status следующим образом:

Status.State state1 = Status.State.A;

Наконец, не забудьте добавить break; после каждого случая в операторе switch, в противном случае совпадение с A также выведет B и C (операторы switch не будут выполнены).

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