0

我现在在 java 和 eclipse 中,我只是试图构建一个简单的计算器,但我不能让它返回结果。

我的计划基本上是当用户单击其中一个操作符时,EditText 不为空,那么 First 变量将与 EditText 相等,并且 Operator 变量发生变化,当用户点击 Result 按钮时,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.Follow 约定。

编辑:

可以看到重新声明几乎所有变量的相同问题。请不要那样做。

于 2012-06-08T10:20:19.480 回答