java - 奇怪的 : For loop returns last iteration under certain conditions

标签 java android for-loop

我遇到了一个奇怪的问题。每当我通过添加一个额外的对象使大小为 5 来更新我的对象数组时,我的 for 循环就会改变它的行为。当我恢复它时,它会恢复正常。这是我的代码

String[] a = new String[4];
    a[0] = "EVENT 1";
    a[1] = "EVENT 2";
    a[2] = "EVENT 3";
    a[3] = "EVENT 4";

    LatLng[] b = new LatLng[4];
    b[0] = new LatLng(32.546586510595404, -80.70999909192324);
    b[1] = new LatLng(32.54606196179351, -80.71023747324944);
    b[2] = new LatLng(32.54620949145382, -80.70962257683277);
    b[3] = new LatLng(32.494091, -80.739474);

然后我通过 for 循环将对象添加到列表中(正确运行)然后我有另一个 for 循环从 getter setter 类中检索这些对象

for(int i = 0; i <= event.size(); i++) {
            latB = event.get(i).getmLatLng().latitude;
            lngB = event.get(i).getmLatLng().longitude; }

因此 for 循环的行为从正常变为仅检索指定次数的最后一次迭代。几天来我一直在寻找问题的确切原因,但我没有发现任何错误,尤其是当我将数组恢复到原来的状态时,问题就消失了。是什么导致了这个问题?

编辑*

好的,这是介于前两个之间的代码。下面是创建事件对象的事件类

public class Event{
public LatLng mLatLng;

public Event()
{

}
public Event(String id, LatLng latlng)
 {
        mLatLng = latlng;
        mId = id;


 }



public void setmLatLng(LatLng latLng)
{
    this.mLatLng = latLng;
}

public LatLng getmLatLng()
{
    return this.mLatLng;
}}

然后在与之前相同的 Activity 中,我将这些事件添加到列表中并将该列表存储在 sql Lite 数据库中

int TOTALEVENTS = a.length-1;



    for(int i = 0; i <= TOTALEVENTS; i++)
    {

        EVENTS.add(i, new Event(new String(EVENTNAME[i]), EVENTLOCATION[i]));

    } db.addEvents(EVENTS);

然后我转到之前的代码,SQL Lite 数据库返回存储的列表

List<Event> event = new ArrayList<Event>();
        event = db.getEvents();

最佳答案

我完全不确定它是如何工作的,因为你使用的是 <=在 for 循环中你应该使用 < :

for(int i = 0; i <= event.size(); i++)

应该是:

for(int i = 0; i < event.size(); i++)

此外,您没有向我们展示代码的重要部分:您正在使用 event.get(i)... - get()是列表注解——不是数组。这意味着你正在做某种从数组到对象的“翻译”,这个对象叫做 event。在你的代码中。这个翻译是如何进行的?错误也可能存在。

关于java - 奇怪的 : For loop returns last iteration under certain conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24398983/

相关文章:

c# - Encog 中的多类 SVM 分类

java - 这个 For 循环有什么问题?

python - 在循环体中使用 remove 时,python "for...in..."如何工作?

java - 如何在java中使用带有标签的switch语句循环

java - 如何在 Spring Boot 应用程序中实现长轮询 REST 端点?

java - 如何在graphview中的X轴上设置固定水平标签(Android Studio)

java - 在 Android Activity 之间传递字符串

Android AAPT 问题 - 将新图像替换为资源时

java - 构造函数 ArrayAdapter<String>(SmsActivity, int, SmsActivity.SmsReceived) 未定义?

java - 如何正确实现计算器删除按钮?