-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 (および他のほとんどの言語) には、いわゆる「スコープ」があります。ここでは「ブロック」に限定しましょう。{ブロックは基本的に、とで囲まれた単一の式の集合体です}

この疑似例を見てください:

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

内側のブロックでは両方aにアクセスできますbが、外側のブロックでは が表示されないため b、アクセスも変更もできません (したがってa、外側のブロックでのみ表示されます)。

于 2013-03-11T18:04:28.113 に答える
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 に答える
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;

}

上記の例は、METHOD LEVEL SCOPE を示しています。この変数fooは、メソッドのスコープ外ではアクセスできません。

  • クラススコープ
  • ループスコープ
  • メソッドのスコープ

Java の可変スコープ

于 2013-03-11T18:00:52.303 に答える