0

私は現在 Java と Eclipse を使用しています。単純な電卓を作成しようとしましたが、結果を返すことができません。

私の計画は基本的に、ユーザーが演算子の 1 つをクリックし、EditText が空でない場合、First 変数が EditText と等しくなり、Operator 変数が変更され、ユーザーが結果ボタンを押すと、First 変数が変更されるというものでした。が空でない場合、EditText は Second 変数と等しくなり、Result 変数は基本的に結果と等しくなります。型と変数で何かを台無しにしたと思いますが、正確にはわかりません。

誰か助けてくれませんか?

これがJavaコードです。

public class Main extends Activity implements OnClickListener {
LinearLayout linear;

float First, Second, Operator, Result;

Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, bResult, bTizedes, bSzorzas,  bKivonas, bOsztas, bOsszeadas;
EditText eT;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    First = 0;
    Second = 0;
    Operator = 0;
    Result = 0;

    b0 = (Button) findViewById(R.id.b0);
    b1 = (Button) findViewById(R.id.b1);
    b2 = (Button) findViewById(R.id.b2);
    b3 = (Button) findViewById(R.id.b3);
    b4 = (Button) findViewById(R.id.b4);
    b5 = (Button) findViewById(R.id.b5);
    b6 = (Button) findViewById(R.id.b6);
    b7 = (Button) findViewById(R.id.b7);
    b8 = (Button) findViewById(R.id.b8);
    b9 = (Button) findViewById(R.id.b9);
    bTizedes = (Button) findViewById(R.id.bTizedes);
    bSzorzas = (Button) findViewById(R.id.bSzorzas);
    bResult = (Button) findViewById(R.id.bEgyenlo);
    bKivonas = (Button) findViewById(R.id.bKivonas);
    bOsztas = (Button) findViewById(R.id.bOsztas);
    bOsszeadas = (Button) findViewById(R.id.bOsszeadas);
    eT = (EditText) findViewById(R.id.eT);

    b0.setOnClickListener(this);b1.setOnClickListener(this);b2.setOnClickListener(this);b3.setOnClickListener(this);
    b4.setOnClickListener(this);b5.setOnClickListener(this);b6.setOnClickListener(this);b7.setOnClickListener(this);
    b8.setOnClickListener(this);b9.setOnClickListener(this);bTizedes.setOnClickListener(this);bSzorzas.setOnClickListener(this);
    bResult.setOnClickListener(this);bKivonas.setOnClickListener(this);bOsztas.setOnClickListener(this);bOsszeadas.setOnClickListener(this);

    bSzorzas.setOnClickListener(new OnClickListener() {
    public void onClick(View view) {
            if(First == 0)
        {
            EditText eT = (EditText) findViewById(R.id.eT);
            float First = Float.valueOf(eT.getText().toString());
            Operator = 2;
            eT.setText(null);
        }
        else if(First != 0)
        {
            Operator = 2;
        };
        }
    });
    bKivonas.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
                if(First == 0)
            {
                EditText eT = (EditText) findViewById(R.id.eT);
                float First = Float.valueOf(eT.getText().toString());
                Operator = 4;
                eT.setText(null);
            }
            else if(First != 0)
            {
                Operator = 4;
            };
            }
        });
    bOsztas.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
                if(First == 0)
            {
                EditText eT = (EditText) findViewById(R.id.eT);
                float First = Float.valueOf(eT.getText().toString());
                Operator = 1;
                eT.setText(null);
            }
            else if(First != 0)
            {
                Operator = 1;
            };
            }
        });
    bOsszeadas.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
                if(First == 0)
            {
                EditText eT = (EditText) findViewById(R.id.eT);
                float First = Float.valueOf(eT.getText().toString());
                Operator = 3;
                eT.setText(null);
            }
            else if(First != 0)
            {
                Operator = 3;
            };
            }
        });
    bResult.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
                if(First != 0)
            {
                EditText eT = (EditText) findViewById(R.id.eT);
                float Second = Float.valueOf(eT.getText().toString());

                if(Operator == 1){
                    int Result = (int) (First) / (int) (Second);
                    eT.setText(Result);
                }

                else if(Operator == 2){
                    int Result = (int) (First) * (int) (Second);
                    eT.setText(Result);
                }

                else if(Operator == 3){
                    int Result = (int) (First) + (int) (Second);
                    eT.setText(Result);
                }

                else if(Operator == 4){
                    int Result = (int) (First) - (int) (Second);
                    eT.setText(Result);
                }

                eT.setText(null);
            }
            else if(First == 0)
            {

            };
            }
        });

}
    public void onClick(View v) {

        switch(v.getId()){

        case R.id.b0:
            eT.setText( eT.getText() + "0");
            break;
        case R.id.b1:
            eT.setText( eT.getText() + "1");
            break;
        case R.id.b2:
            eT.setText( eT.getText() + "2");
            break;
        case R.id.b3:
            eT.setText( eT.getText() + "3");
            break;
        case R.id.b4:
            eT.setText( eT.getText() + "4");
            break;
        case R.id.b5:
            eT.setText( eT.getText() + "5");
            break;
        case R.id.b6:
            eT.setText( eT.getText() + "6");
            break;
        case R.id.b7:
            eT.setText( eT.getText() + "7");
            break;
        case R.id.b8:
            eT.setText( eT.getText() + "8");
            break;
        case R.id.b9:
            eT.setText( eT.getText() + "9");
            break;
    } 
    }}
4

2 に答える 2

1

このチュートリアルに焦点を当てて、物事がどのように行われるかを確認してください. また、それを改善してみてください.

于 2012-06-08T10:49:04.490 に答える
0
 float First = Float.valueOf(eT.getText().toString());

2 つの問題:

  1. Firstここで変数を再宣言するのはなぜですか? 単にそれを使用してください。
  2. 解析するには、使用しますFloat.parseFloat(eT.getText().toString());

そして、なぜ変数に名前を付けるのFirstですか? first慣例に従います。

編集:

ほとんどすべての変数を再宣言するという同じ問題が発生する可能性があります。お願い、それはやめて。

于 2012-06-08T10:20:19.480 に答える