我的程序从套接字读取数据,现在我想在文本框中显示该数据。我将数据拆分成单独的变量,这是我的代码:
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。它必须为空且不使用复合赋值”。任何有助于解决问题的帮助都将受到高度赞赏。
答案 0 :(得分:0)
您要分配aData
两次。我假设您打算aData
,bData
和cData
,但您有两个aData
和一个cData
。
除了这个问题,您还可以在声明它们时为每个变量分配0
。然后尝试在if
块中分配新值。您只能分配一次最终变量。
答案 1 :(得分:0)
final
保留的工作意味着您的变量可能只被初始化/分配一次。由于您要分配final int aData = 0;
,这意味着它无法再次分配。这有它的好处(例如,如果你确定你只想让你的变量被分配一次,你应该将它声明为final
- 即使这对编译器有一点帮助),但它肯定是一个你不寻找的行为。只需从变量中删除final
即可。
答案 2 :(得分:0)
由于您在变量aData,bData和cData上使用了关键字“final”,因此无法再在程序中的其他位置重新分配新值。它们取值0并保持这种状态。如果要更改修改符'final',请将其删除。