循环错误

时间:2016-01-22 12:54:08

标签: java android for-loop

我的周期有一个问题。 我用JsonParser解析数据,在我使用一个周期打印所有数据后,我只收到最后一个结果。

这是代码:

try{
    JSONArray jArray = new JSONArray(result);
    for(int i=0;i<jArray.length();i++){
        JSONObject json_data = jArray.getJSONObject(i);

        Log.d("id_Persons", "id: " + json_data.getString("id_Persons") 
            + ", nome: " + json_data.getString("name") 
            + json_data.getString("address")
        );

        stringaFinale =  json_data.getString("id_Persons") + " " 
            + json_data.getString("name") + " " 
            + json_data.getString("address");
    }
    return stringaFinale;
}
catch(JSONException e){
    Log.e("log_tag", "Error parsing data "+e.toString());
}

但是,

Log.d("id_Persons", "id: " + json_data.getString("id_Persons") 
    + ", nome: " + json_data.getString("name") 
    + json_data.getString("address")
);

我不明白错误是什么。 This is the screen of app

1 个答案:

答案 0 :(得分:1)

您在for循环的每次迭代中都会覆盖它的值。

更改

 stringaFinale =  json_data.getString("id_Persons") + " " + json_data.getString("name") + " " + json_data.getString("address");

 stringaFinale +=  json_data.getString("id_Persons") + " " + json_data.getString("name") + " " + json_data.getString("address");

注意:您应该使用空字符串初始化stringaFinale

String stringaFinale = "";

更新:另一种更好的方法是使用StringBuilder这样的

// declare it before the loop 
StringBuilder stringaFinale = new StringBuilder(200); // use appropriate size

//Inside the loop
stringaFinale.append(json_data.getString("id_Persons") + " " + json_data.getString("name") + " " + json_data.getString("address"));

//Get the value
stringFinale.toString();