-1

我正在尝试访问X函数内部的变量,但我似乎无法访问它。我有一个函数“Action()”

public void Action(){

  ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();

  try {
    String response = null;
    try {
      response = CustomHttpClient.executeHttpPost("http://www.xxxx.com/xxxx.php",
                                                  postParameters);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    String result = response.toString();  

    //parse json data
    try {
      returnString = "";
      JSONArray jArray = new JSONArray(result);
      for (int i=0; i<jArray.length(); i++) {

        JSONObject json_data = jArray.getJSONObject(i);
        Log.i("log_tag","id: "+json_data.getInt("id")+
              ", name: "+json_data.getString("name")+
              ", sex: "+json_data.getInt("sex")+
              ", birthyear: "+json_data.getInt("birthyear"));
        X = json_data.getInt("birthyear");
        returnString += "\n" + json_data.getString("Time") + " -> "+ json_data.getInt("Value");
      }
    } catch(JSONException e){
      Log.e("log_tag", "Error parsing data "+e.toString());
    } catch(Exception e){
      Log.e("log_tag","Error in Display!" + e.toString());;          
    }   
  }
}

我希望能够在方法之外访问变量“X”,但它一直告诉我没有声明 X。

4

3 回答 3

1

在 Java(和大多数其他语言)中有所谓的“作用域”,让我们在这里限制为“块”。块基本上是包含在{and中的单个表达式的聚合}

看看这个伪示例:

{ // outer block
    int a = 1;
    { // inner block
        int b = 1;
    }
}

在内部块中您可以访问两者ab而在外部块中您看不到 b,这就是为什么您既不能访问也不能更改它(所以你只能a在外部块中看到)

于 2013-03-11T18:04:28.113 回答
0
void method(){

   int foo; //this is called variable declaration

   //some where else in code
   foo = 12; //this is called initialization of the variable

   int fooBar = foo + bar;

}

上面的示例显示了方法级别范围。该变量foo将无法在方法范围之外访问。

  • 类范围
  • 循环范围
  • 方法范围

Java中的可变作用域

于 2013-03-11T18:00:52.303 回答
0

根据需要在方法内部声明X实例变量或局部变量。

如果您想从任何实例方法访问此变量,则声明它为实例变量,或者如果您想将范围设为本地,则在方法中声明它。

public class MainActivity extends Activity {
   ....
   private int X;   //Way to declare the instance variable.
  ....

  private void methodName() {
  {
        private int X;   //Way to declare the local variable.
  }
}

在 Java 中,您需要在使用之前声明变量。您正在初始化它而不声明它。

于 2013-03-11T17:57:45.170 回答