0

2 つのアクティビティを作成し、MainActivity はいくつかの変数をアクティビティ「Calculation」に渡しています。これは意図したとおりに機能し、変数は正しく送信および受信されます。インテント「サイズ」の値に応じて、整数「size_int」を作成したいと思います。問題は次の行で発生します。

    debug1.setText(size_int);

Eclipse は、"size_int" という名前のローカル変数を作成するように指示します。なぜ「size_int」がこの行で使用できないのか、if ステートメントで以前に定義されているため、私にはわかりません。それについて何か考えはありますか?変数「size_int」がifステートメントで定義されていることに何か関係があると思いますが、よくわかりません。

完全なコードは次のとおりです。

package com.example.eggtimer;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Calculation extends Activity {



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculation);


        // get Intents (Size, Temperature and yolk from Main Activity)
        String size = getIntent().getExtras().getString("size");
        String temperature = getIntent().getExtras().getString("temperature");
        String yolk = getIntent().getExtras().getString("yolk");

        if (size.equals("Small")) {
            int size_int = 30;
        }



        // Debug Variables
        TextView debug1 = (TextView) findViewById(R.id.textViewDebug1);


        debug1.setText(size_int);

    }



}
4

2 に答える 2

0

「可変スコープ」と呼ばれる概念について読む必要があります。一般に、コードブロックで宣言された変数は、そのコードブロックに対してローカルであり、外部には表示されません。したがって、あなたはあなたのsize_int 外であなたを宣言するべきですif()

    int size_int = 0;
    if (size.equals("Small")) {
        size_int = 30;
    }

一般に、コードブロックの外側で宣言された変数はブロック内に表示されますが、コードブロックの内側で宣言された変数はそのコードブロックに対してローカルです。

于 2012-10-21T15:54:41.220 に答える
0

以下のように変更します。これは、中括弧内で宣言するとスコープが制限されるため、外側で宣言してスコープを拡大する必要があるためです。

int size_int = 0; 
if (size.equals("Small")) {
            size_int = 30;
}
于 2012-10-21T15:50:27.890 に答える