Java 为什么不';这不是循环工作吗?

Java 为什么不';这不是循环工作吗?,java,android,json,for-loop,hashmap,Java,Android,Json,For Loop,Hashmap,这是一个android应用程序,它从两个不同的JSON URL获取数据。然后我想混合他们的数据并把它们放在地图上。为此,我使用嵌套的for循环。但问题是它只显示年份和SYSTEMDATA2,而不显示SYSTEMDATA1。我认为我的嵌套循环不正确 有人知道原因吗 for(int i = 0; i < array2System1.length(); i++){ c1 = array2System1.getJSONObject(i); for(int x =

这是一个android应用程序,它从两个不同的JSON URL获取数据。然后我想混合他们的数据并把它们放在地图上。为此,我使用嵌套的for循环。但问题是它只显示年份和SYSTEMDATA2,而不显示SYSTEMDATA1。我认为我的嵌套循环不正确

有人知道原因吗

for(int i = 0; i < array2System1.length(); i++){
        c1 = array2System1.getJSONObject(i);

        for(int x = 0; x < array2System2.length(); x++){

            c2 = array2System2.getJSONObject(x);

            }

        //Storing JSON item in a Variable
        valueSystem2 = c2.getString(SYSTEMDATA2);
        year = c1.getString(YEAR);
        valueSystem1 = c1.getString(SYSTEMDATA1);

         // Adding value HashMap key => value
         HashMap<String, String> map = new HashMap<String, String>();
         map.put(SYSTEMDATA1, valueSystem1);
         map.put(SYSTEMDATA2, valueSystem2);
         map.put(YEAR, year);


         mylist.add(map);
         list=(ListView)findViewById(R.id.list);

         ListAdapter adapter = new SimpleAdapter(Search.this, mylist,
                    R.layout.list_M,
                    new String[] {SYSTEMDATA1, SYSTEMDATA2, YEAR}, new int[] {
                            R.id.systemData1, R.id.systemData2, R.id.years});

         mylist.setAdapter(adapter);
    }
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
list=(ListView)findViewById(R.id.list);
ListAdapter=new SimpleAdapter(Search.this,mylist,
R.layout.list_M,
新字符串[]{SYSTEMDATA1,SYSTEMDATA2,YEAR},新int[]{
R.id.systemData1,R.id.systemData2,R.id.years});
mylist.setAdapter(适配器);
}
结果应该是这样的 年份值(SYSTEMDATA2)值(SYSTEMDATA1)

当前问题 它不显示其中一个值。(SYSTEMDATA1或SYSTEMDATA2)

新更新

        //Getting JSON Array
        JSONObject myJson1 = jsons[0];
        JSONObject myJson2 = jsons[1];
        try {
            List<Map<String, String>> listValues = new ArrayList<Map<String, String>>();



            JSONArray array1C1 = myJson1.getJSONArray("myDATA");
            JSONArray array2C1 = array1C1.getJSONArray(1);

            JSONArray array1C2 = myJson2.getJSONArray("myDATA");
            JSONArray array2C2 = array1C2.getJSONArray(1);

            for (int i=0; i<array2C1.length(); i++)
            {
                JSONObject entryJsonC1 = array2C1.getJSONObject(i);


                String val1 = entryJsonC1.getString(SYSTEMDATA1);

                String year = entryJsonC1.getString("date");


                    JSONObject entryJsonC2 = array2C2.getJSONObject(i);

                    String val2 = entryJsonC2.getString(SYSTEMDATA2);


                Map<String, String> map = new HashMap<String, String>();
                map.put(SYSTEMDATA1, val1);
                map.put(SYSTEMDATA2, val2);
                map.put(YEAR, year);


                listValues.add(map);

            }

            list = (ListView) findViewById(R.id.list);


            String[] adaptersKeys = new String[] {SYSTEMDATA1, SYSTEMDATA2, YEAR};
            int[] adapterViews = new int[] {R.id.systemData1, R.id.systemData2, R.id.years};
            ListAdapter adapter = new SimpleAdapter(MultiMainActivity.this, listValues, R.layout.list2, adaptersKeys, adapterViews);

            list.setAdapter(adapter);

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
//获取JSON数组
JSONObject myJson1=jsons[0];
JSONObject myJson2=jsons[1];
试一试{
List listValues=新的ArrayList();
JSONArray array1C1=myJson1.getJSONArray(“myDATA”);
JSONArray array2C1=array1C1.getJSONArray(1);
JSONArray array1C2=myJson2.getJSONArray(“myDATA”);
JSONArray array2C2=array1C2.getJSONArray(1);

对于(inti=0;i
for)(inti=0;i
for)(inti=0;i
for)(inti=0;i
for)(inti=0;i您需要将所有代码放在内部循环中。当前您只需关闭内部循环-它运行并覆盖
c2
,而不执行任何操作

比如:

for(int i = 0; i < array2System1.length(); i++){
    c1 = array2System1.getJSONObject(i);

    for(int x = 0; x < array2System2.length(); x++){
        c2 = array2System2.getJSONObject(x);

        //Storing JSON item in a Variable
        valueSystem2 = c2.getString(SYSTEMDATA2);
        year = c1.getString(YEAR);
        valueSystem1 = c1.getString(SYSTEMDATA1);

        // Adding value HashMap key => value
        HashMap<String, String> map = new HashMap<String, String>();
        map.put(SYSTEMDATA1, valueSystem1);
        map.put(SYSTEMDATA2, valueSystem2);
        map.put(YEAR, year);

        mylist.add(map);
    }
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}

您需要将所有代码放入内部循环。当前,您只需关闭内部循环-它运行并覆盖
c2
,而不执行任何操作

比如:

for(int i = 0; i < array2System1.length(); i++){
    c1 = array2System1.getJSONObject(i);

    for(int x = 0; x < array2System2.length(); x++){
        c2 = array2System2.getJSONObject(x);

        //Storing JSON item in a Variable
        valueSystem2 = c2.getString(SYSTEMDATA2);
        year = c1.getString(YEAR);
        valueSystem1 = c1.getString(SYSTEMDATA1);

        // Adding value HashMap key => value
        HashMap<String, String> map = new HashMap<String, String>();
        map.put(SYSTEMDATA1, valueSystem1);
        map.put(SYSTEMDATA2, valueSystem2);
        map.put(YEAR, year);

        mylist.add(map);
    }
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}

您需要将所有代码放入内部循环。当前,您只需关闭内部循环-它运行并覆盖
c2
,而不执行任何操作

比如:

for(int i = 0; i < array2System1.length(); i++){
    c1 = array2System1.getJSONObject(i);

    for(int x = 0; x < array2System2.length(); x++){
        c2 = array2System2.getJSONObject(x);

        //Storing JSON item in a Variable
        valueSystem2 = c2.getString(SYSTEMDATA2);
        year = c1.getString(YEAR);
        valueSystem1 = c1.getString(SYSTEMDATA1);

        // Adding value HashMap key => value
        HashMap<String, String> map = new HashMap<String, String>();
        map.put(SYSTEMDATA1, valueSystem1);
        map.put(SYSTEMDATA2, valueSystem2);
        map.put(YEAR, year);

        mylist.add(map);
    }
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}

您需要将所有代码放入内部循环。当前,您只需关闭内部循环-它运行并覆盖
c2
,而不执行任何操作

比如:

for(int i = 0; i < array2System1.length(); i++){
    c1 = array2System1.getJSONObject(i);

    for(int x = 0; x < array2System2.length(); x++){
        c2 = array2System2.getJSONObject(x);

        //Storing JSON item in a Variable
        valueSystem2 = c2.getString(SYSTEMDATA2);
        year = c1.getString(YEAR);
        valueSystem1 = c1.getString(SYSTEMDATA1);

        // Adding value HashMap key => value
        HashMap<String, String> map = new HashMap<String, String>();
        map.put(SYSTEMDATA1, valueSystem1);
        map.put(SYSTEMDATA2, valueSystem2);
        map.put(YEAR, year);

        mylist.add(map);
    }
}
for(int i=0;ivalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}
}

第二个for循环很早就关闭了。它应该如下所示

for(int x = 0; x < array2System2.length(); x++){

            c2 = array2System2.getJSONObject(x);

        //Storing JSON item in a Variable
        valueSystem2 = c2.getString(SYSTEMDATA2);
        year = c1.getString(YEAR);
        valueSystem1 = c1.getString(SYSTEMDATA1);

         // Adding value HashMap key => value
         HashMap<String, String> map = new HashMap<String, String>();
         map.put(SYSTEMDATA1, valueSystem1);
         map.put(SYSTEMDATA2, valueSystem2);
         map.put(YEAR, year);
         mylist.add(map);
} // This is where it should get closed
for(int x=0;xvalue
HashMap=newHashMap();
map.put(SYSTEMDATA1,valueSystem1);
map.put(SYSTEMDATA2,valueSystem2);
地图放置(年,年);
添加(地图);
}//这是它应该关闭的地方
否则,您只需重新分配c2变量,并失去最后一个值的其他值
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(SYSTEMDATA1, valueSystem1);
map.put(SYSTEMDATA2_KEY, valueSystem2);
map.put(YEAR, year);
//you can't have 2 entries with the same key
private static final String SYSTEMDATA2_KEY = "value2";

// Create a new Map
Map<String, String> map = new HashMap<String, String>();
map.put(SYSTEMDATA1, val1);
map.put(SYSTEMDATA2_KEY, val2);
map.put(YEAR, year);
// Create a new adapter to attach this listView
String[] adapterKeys = new String[] {SYSTEMDATA1, SYSTEMDATA2_KEY, YEAR};