Android 我想在两个编辑文本之间建立一个等式

Android 我想在两个编辑文本之间建立一个等式,android,string,android-edittext,integer-overflow,android-toast,Android,String,Android Edittext,Integer Overflow,Android Toast,我想在两个编辑文本之间建立等式,并将输出放在Toast上 我试着用这种方式: stringdata1=one.getText().toString(); 字符串data2=two.getText().toString(); 字符串RES=data1+data2 但这种方式将结果输出为字符串而不是数字 查找以下代码:主活动代码:MainActivity.java package com.mkadaim.android; import android.R.integer; import andro

我想在两个编辑文本之间建立等式,并将输出放在Toast上 我试着用这种方式:
stringdata1=one.getText().toString();
字符串data2=two.getText().toString();
字符串RES=data1+data2
但这种方式将结果输出为字符串而不是数字
查找以下代码:主活动代码:MainActivity.java

package com.mkadaim.android;

import android.R.integer;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

 public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    final EditText one = (EditText)findViewById(R.id.First);
    final EditText two = (EditText)findViewById(R.id.Second);

    Button res = (Button)findViewById(R.id.Result);
    res.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
        int x = one.getText();
        int y = two.getText();
        int z = x + y;
        Toast.makeText(getBaseContext(), z, 4000).show();

        }
    });
}


}
getText()返回EditText的id。用这个代替

@Override
public void onClick(View v) {
    int x = Integer.parseInt(one.getText().toString());
    int y = Integer.parseInt(two.getText().toString());
    int z = x + y;
    Toast.makeText(getBaseContext(), z, 4000).show();

在求值之前,您需要将字符串解析为整数,如下所示:

res.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        String xStr = one.getText().toString().trim();
        String yStr = two.getText().toString().trim();

        if(!(xStr.equals("") && yStr.equals(""))){
            int x = Integer.parseInt(xStr);    //Try catch for handling parse exceptions for both String
            int y = Integer.parseInt(yStr); 
            int z = x + y;
            Toast.makeText(context, String.valueOf(z), 4000).show();
        }
        else{
            //enter both numbers
        }
    }
});

希望有帮助。

您不能添加两个字符串。字符串的+运算符具有串联的含义,结果是一个字符串。在显示结果之前,您可能需要将字符串转换为数字并求和

try  {  
    int x = Integer.parseInt(one.getText().toString().trim());   
    int y = Integer.parseInt(two.getText().toString().trim()); 
    int z = x + y; 
    Toast.makeText(context, ""+z, 4000).show();
  }  
  catch(NumberFormatException nfe)  
  {  
    Toast.makeText(context, "Error!!!", 4000).show();  
  }  

为什么不使用
Toast.LENGTH\u LONG
Toast.LENGTH\u SHORT
这是一种惯例,而不是数值;)

字符串RES=”“+(Double.ParseDouble(data1)+Double.ParseDouble(data2));这样做更好的方法是检查
xStr
yStr
是否不等于空值,例如
if(null!=xStr){//codes here}
,而不是空白值。你能解释一下这段代码“if(!(xStr.equals(“”)&&yStr.equals(“”))是什么意思吗“请尝试捕获以处理两个字符串的分析异常”@MKADAIM edittext.getText()返回可编辑。首先,需要将其转换为字符串。我对其进行了修剪,以便用户只输入”“在编辑文本中,这是不允许的。然后我将字符串解析为整数。这样你就可以对它们进行数学运算了。不能添加两个字符串,但可以添加两个整数。最后,我显示了result中字符串的Toast,因为Toast方法不能支持整型参数。@MKADAIM我检查了“”以避免提交空值,并对NumberFormatException进行了异常处理。如果在EditText中输入“1”而不是数字“1”,则无法解析该值。参考
    int x = Integer.parseInt(one.getText().toString());
    int y = Integer.parseInt(two.getText().toString());
    int z = x + y;
    Toast.makeText(getBaseContext(), z, 4000).show();