我在循环中添加,但返回值始终为0,我无法弄明白。
如果我取消注释最后两行中的一行,它会正确返回手动值,而其余的类也可以。 ARRAYLIST_SIZE = 10。
public float averageBearing() {
float sumBng = 0;
for (int i = 0; i==ARRAYLIST_SIZE; i++) {
Location l = locList.get(i);
float tempBearing = l.getBearing();
sumBng += tempBearing;
}
float finalBng = sumBng/ARRAYLIST_SIZE;
//remove following lines for real use
//finalBng = (float) (Math.random()*360);
//finalBng = (float) 105.0;
return finalBng;
}
我有理由相信列表中的位置有方位,这是add方法。我现在不得不欺骗轴承,因为如果我们搬家,地点只有它,但我在我的固定办公桌。
public void add(Location location) {
if (locList == null) {
locList = new ArrayList<Location>();
}
//test code to spoof bearing
location.setBearing((float) 105.0);
//use only locations with extra data
if (location.hasBearing() && location.hasSpeed()) {
locList.add(location);
mostRecent = location;
//ensure we have at most 10 recent locations
//no reason to use stale data
while (locList.size()>10) {
locList.remove(0);
}
}
ARRAYLIST_SIZE = locList.size();
}
答案 0 :(得分:3)
循环中的条件表达式是测试相等性。它在第一次测试时失败,因为我为零,ARRAYLIST_SIZE为10.将其更改为:
for (int i = 0; i<ARRAYLIST_SIZE; i++) {
答案 1 :(得分:3)
改变这个:
for (int i = 0; i==ARRAYLIST_SIZE; i++)
到此:
for (int i = 0; i<ARRAYLIST_SIZE; i++)
答案 2 :(得分:1)
你永远不会因为
而进入for循环i==ARRAYLIST_SIZE
应该是
i<ARRAYLIST_SIZE