2012-06-11 2 views
-4

Я пытаюсь заставить эту программу отменить себя после запуска 3 раза, но я продолжаю получать ошибку «Локальная переменная taskId, возможно, не была инициализирована». Для одного это опасно. Можно ли все еще правильно скомпилировать его и запустить программу, несмотря на получение ошибок компилятора? Наконец, как бы я это исправить? Благодаря!Как предотвратить инициализацию переменной ошибки в Java

final int taskId = plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { 
    int count = 0; 
    @Override 
    public void run() { 
     ((LivingEntity) e.getEntity()).damage(2); 
     count++; 
     if (count > 2) { 
      Bukkit.getScheduler().cancelTask(taskId); 
     } 
    } 

}, 60L); 
+0

«Могу ли я все же правильно скомпилировать его, несмотря на получение ошибок компилятора» ??? – Muse

+0

'могу я все еще правильно скомпилировать его, несмотря на получение ошибок компилятора?' Man, вам нужно сначала освоить основы программирования b4 u попробовать такие вещи высокого уровня – Pranalee

+1

, к сожалению, «просто доверяйте мне на этом» -switch еще не реализован в любом компиляторе .. :) – hage

ответ

2

Возможно, вы попытаетесь использовать taskId перед его инициализацией.

Это не будет работать в вашем случае, поскольку он не доступен только в cancelTask(taskId), но когда анонимный класс построен. т.е. до того, как он будет установлен.

Вместо этого стоит использовать int[] task, но это опасно.

Простая работа заключается в том, чтобы выбросить исключение RuntimeException, например IllegalStateException или один из ваших собственных, поскольку это остановит повторение задачи.

+0

Спасибо большое, отлично работает. –

Смежные вопросы