Последняя локальная переменная не может быть назначена: Android

Моя программа читает данные из сокета, и теперь я хочу отобразить эти данные в текстовом поле. Я разделил данные на отдельные переменные и вот мой код:

                  final int aData = 0;
                  final int aData = 0;
                  final int cData = 0;

                      final String[] separated = data.split(":");
                      if ((separated.length == 3) && (data.contains(":")))
                      {
                            aData = Integer.parseInt(separated[0]);
                            bData   = Integer.parseInt(separated[1]);
                            cData     = Integer.parseInt(separated[2]);


                      }

                      handler.post(new Runnable() {
                            public void run() {
                                    txtDebug.setText("a: "+aData + " b: "+bData + " c: " + cData);

                            }
                          });

он не позволяет мне запустить программу и показывает следующую ошибку:

"Конечная локальная переменная aData не может быть назначена. Она должна быть пустой и не использовать составное назначение". Любая помощь для решения проблемы будет принята с благодарностью.

3 ответа

Решение

Вы назначаете aData дважды. Я полагаю, вы хотели иметь aData, bData а также cData но у вас есть два лота aData и один cData,

Помимо этой проблемы, вы также назначаете 0 каждой из этих переменных, когда вы объявляете их. Затем вы пытаетесь назначить новые значения в if блок. Вы можете назначить окончательную переменную только один раз.

Поскольку вы использовали ключевое слово 'final' для переменных aData, bData и cData, им больше нельзя переназначать новые значения в других местах программы. Они принимают значение 0 и остаются такими. Удалите модификатор 'final', если вы хотите изменить их.

final зарезервированная работа означает, что ваша переменная может быть инициализирована / назначена только один раз. Так как вы назначаете final int aData = 0;, это означает, что он не сможет назначить его снова. Это имеет свои преимущества (например, если вы уверены, что хотите, чтобы ваша переменная была назначена один раз, вы должны объявить ее как final - даже это немного поможет компилятору), но это поведение, которое вы не ищете. Просто удалить final из ваших переменных.

Другие вопросы по тегам