4

我是 android 编程的初学者,我正在尝试编写一个带有 3 个 editText 字段的简单计算器。其中 2 个用作输入,第 3 个用作输出结果。当我点击“+”按钮时,我希望它输出两个数字的总和。但我得到一个奇怪的数字,例如 2+3 = 2.131230724E9 我尝试通过网络解决,但找不到具体问题....谢谢...

final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1));
final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2));


    Button btplus = (Button)findViewById(R.id.button1);


    btplus.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            double tf3;
            tf3 = tf1 + tf2;
            EditText result = (EditText)findViewById(R.id.editText3);
            result.setText(String.valueOf(tf3));
        }
    });
4

5 回答 5

2

问题出在您的代码中:

final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1));
final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2));

您没有采用 EditText 的值,而是采用对对象的引用。您需要将其更改为类似的内容

final double tf1 = Double.parseDouble(((EditText)findViewById(R.id.editText1)).getText().toString());
final double tf2 = Double.parseDouble(((EditText)findViewById(R.id.editText2)).getText().toString());

此外,您应该在按钮的 OnClick 方法中包含这一行,以便在您单击按钮时它会采用当前值。

于 2013-07-30T12:41:33.167 回答
2

R.id.editText1指的是 int 值R.java

您需要先在onCreate. 如果您不希望最终修饰符将 EditText 声明为类成员

   final EditText ed1 = (EditText) findViewById(R.id.editText1);
   final EditText ed2 = (EditText) findViewById(R.id.editText1);
   final EditText result = (EditText)findViewById(R.id.editText3);  

然后

    Button btplus = (Button)findViewById(R.id.button1);  
    btplus.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v)
    {
        double tf3;
        double tf1 =Double.parseDouble(ed1.getText().toString());
        double tf2 =Double.parseDouble(ed2.getText().toString());
        tf3 = tf1 + tf2; 
        result.setText(String.valueOf(tf3));
    }
    });
于 2013-07-30T12:41:57.940 回答
0

而不是这个:

result.setText(String.valueOf(tf3));

用这个 :

result.setText("" + tf3);
于 2013-07-30T12:41:28.383 回答
0

尝试以下操作:

EditText editText1 = (EditText) findViewById(R.id.editText1);
EditText editText2 = (EditText) findViewById(R.id.editText2);

final double tf1 = Double.parseDouble(editText1.getText().toString());
final double tf2 = Double.parseDouble(editText2.getTExt().toString());

R.id 只是一个参考整数,这就是为什么将两个 id 整数相加时得到奇数的原因,而不是文本框中的实际值。

于 2013-07-30T12:43:17.073 回答
0
final double tf1 = Double.parseDouble(edittext1.getText().toString());
final double tf2 = Double.parseDouble(edittext2.getText().toString());


Button btplus = (Button)findViewById(R.id.button1);


btplus.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v)
    {
        double tf3 = 0;
        tf3 = tf1 + tf2;
        EditText result = (EditText)findViewById(R.id.editText3);
        result.setText(String.valueOf(tf3));
    }
});
于 2013-07-30T12:45:08.900 回答