我的某个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坐标,但我不确定我应该怎么做...有人能指出我正确的方向吗?
答案 0 :(得分:2)
您的代码编写好像positionsToBeFiltered
是sitesToBeFiltered.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) + "]. ");