无法分配最终的本地变量:Android

时间:2014-03-04 21:35:40

标签: android final

我的程序从套接字读取数据,现在我想在文本框中显示该数据。我将数据拆分成单独的变量,这是我的代码:

                  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 个答案:

答案 0 :(得分:0)

您要分配aData两次。我假设您打算aDatabDatacData,但您有两个aData和一个cData

除了这个问题,您还可以在声明它们时为每个变量分配0。然后尝试在if块中分配新值。您只能分配一次最终变量。

答案 1 :(得分:0)

final保留的工作意味着您的变量可能只被初始化/分配一次。由于您要分配final int aData = 0;,这意味着它无法再次分配。这有它的好处(例如,如果你确定你只想让你的变量被分配一次,你应该将它声明为final - 即使这对编译器有一点帮助),但它肯定是一个你不寻找的行为。只需从变量中删除final即可。

答案 2 :(得分:0)

由于您在变量aData,bData和cData上使用了关键字“final”,因此无法再在程序中的其他位置重新分配新值。它们取值0并保持这种状态。如果要更改修改符'final',请将其删除。