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

时间:2014-09-27 12:19:52

标签: android string android-edittext integer-overflow android-toast

我想在两个编辑文本之间建立等式并将输出放在Toast上 我试着用这种方式: String data1 = one.getText().toString(); String data2 = two.getText().toString(); String RES = data1 + data2; 但这种方式输出结果为String而不是数字 查找以下代码:主要活动代码: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();

        }
    });
}


}

4 个答案:

答案 0 :(得分:0)

one.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();

答案 1 :(得分:0)

在评估之前,您需要按如下方式将String解析为Integer:

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
        }
    }
});

希望它有所帮助。

答案 2 :(得分:0)

你不能添加两个字符串。字符串的+运算符采用连接的含义,结果是字符串。在显示结果之前,你想要的是在数字中转换字符串并对它们求和。

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();  
  }  

答案 3 :(得分:0)

    int x = Integer.parseInt(one.getText().toString());
    int y = Integer.parseInt(two.getText().toString());
    int z = x + y;
    Toast.makeText(getBaseContext(), z, 4000).show();

为什么不使用Toast.LENGTH_LONGToast.LENGTH_SHORT这是一种习惯而不是数值;)