我一直试图让这个正确的2天,我准备扔东西.....
我有一个JSONArray,我正在try/catch块中处理,但它似乎没有在最后传递变量.
我的代码:
try{
//Get the element that holds the results ( JSONArray )
JSONArray getresults = json.getJSONArray("results");
//Loop the Array
for(int i=0;i < getresults.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = getresults.getJSONObject(i);
totalpass = e.getJSONObject(i).getString("ftotalpass");
}
} catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
Run Code Online (Sandbox Code Playgroud)
我已尝试在try/catch块之前,之后,之后声明变量的所有庄园,但我无法将其传递给我的其余代码.
我究竟做错了什么?
嗯...
你可以在外面宣布它.如
JSONArray results = null;
try {
results = json.getJSONArray("results");
}...
Run Code Online (Sandbox Code Playgroud)
这样你可以在外面访问它,但一定要使用if来查看它是否为null.
如果你不把JSONArray results = null编译器可能会抱怨没有被初始化的变量.
进一步说明:
这是因为范围.当您在try中声明时,变量的范围在try结束时结束.当你在if中声明,当if结束时,不再能访问该变量.这对于临时变量非常有用,在这些变量中,您只使用它们进行比较或更好的代码可读性,内存重用等.(如果这甚至是单词,则为idk).无论如何,如果你的变量需要在类中的任何地方访问,那么最好将其声明为字段.
我没有读过这个解释,但似乎很好.看一看.
| 归档时间: |
|
| 查看次数: |
7984 次 |
| 最近记录: |