Java变量无法解析或不是字段

时间:2014-05-07 10:53:26

标签: java arraylist

我的某个Java类中的变量出现“无法解析或不是字段”错误,我不明白为什么......我已经在网上查看了,但可以'找到任何真正解释我为什么会得到它的东西。错误发生在以下for循环中:

int i;
getFilterConditions();
for(i = 0; i < sitesToBeFiltered.size(); i++){
    if(sitesToBeFiltered.get(i) == filter1Value){
        Gui.displayFilteredOutput.append("\n");
    Gui.displayFilteredOutput.append("EID: [" + sitesToBeFiltered.get(i) + ", " + applicationsToBeFiltered.get(i) + ", " + IDsToBeFiltered.get(i) + "]. ");
    Vector3Double filteredEntityPosition = 
    Gui.displayFilteredOutput.append("Location in DIS coordinates: [" + sitesToBeFiltered.get(i).positionsToBeFilteredX.get(i));
    }
}

它是在positionsToBeFilteredX.get(i)循环结束时的for变量上生成的。我已使用以下行将变量定义为类顶部的全局变量:

public static ArrayList<Double> positionsToBeFilteredX = new ArrayList<Double>();

要解释我在这里要做的事情:

我有一个程序正在读取通过网络发送/接收的PDU,并且存储PDU本身以及每个PDU在多个ArrayLists中保存的信息。我试图用这个代码做的是获取用户在表单上输入的值(存储在filter1Value整数变量中),并检查该值是否等于a中的任何元素特别是ArrayList(sitesToBeFiltered)。

所以,我循环遍历sitesToBeFiltered ArrayList,并检查每个元素以查看它是否完全等于filter1Value的值。如果是,我接着将一些关于匹配的ArrayList元素的文本附加到JTextArea(displayFilteredOutput)。

我想要添加到JTextArea的一件事是匹配元素的X位置(当发现元素与用户的搜索条件匹配时,它被添加到positionsToBeFilteredX

所以我要对最后一行代码做的是将sitesToBeFiltered ArrayList中匹配元素的X坐标(存储在X坐标数组中)附加到{{1 JTextArea,但由于某种原因,我得到了这个“无法解析,或者不是字段”的变量编译错误。

任何人都可以向我解释为什么会这样吗?我怀疑我没有正确引用与过滤器值匹配的元素的X坐标,但我不确定我应该怎么做...有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

您的代码编写好像positionsToBeFilteredsitesToBeFiltered.get(i)返回的对象中的字段。显然不是。

答案 1 :(得分:1)

应该早点看到它:问题是因为我试图将值赋给一个不兼容类型的变量。要解决这个问题,我只需要将值附加到Gui中的JTextArea,而不是先将其赋值给变量:即代替编写

Vector3Double filteredEntityPosition = Gui.displayFilteredOutput.append("Location in DIS coordinates: [" + positionsToBeFiltered.get(i);

我只需要写:

Gui.displayFilteredOutput.append("Location in DIS coordinates: [" + positionToBeFiltered.get(i) + "]. ");