【问题标题】:I want to make equation between two Edit text我想在两个编辑文本之间做等式
【发布时间】:2023-04-03 07:49:02
【问题描述】:

我想在两个编辑文本之间建立等式并将输出放在 Toast 上 我尝试使用这种方式: String data1 = one.getText().toString(); String data2 = two.getText().toString(); String 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();

        }
    });
}


}

【问题讨论】:

  • String RES = ""+(Double.ParseDouble(data1) + Double.ParseDouble(data2));这样做

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


【解决方案1】:

在评估之前,您需要将 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
        }
    }
});

希望对你有帮助。

【讨论】:

  • 更好的方法是检查 xStryStr 是否不等于空值,例如if (null != xStr) { // codes here },而不是空白值。
  • 你能解释一下这段代码`if(!(xStr.equals("") && yStr.equals("")))` 以及“尝试使用catch处理解析异常”是什么意思对于两个字符串"
  • @MKADAIM edittext.getText() 返回可编辑。首先,需要将其转换为字符串。我进行了修剪,以便如果用户仅在 EditText 中输入“”,则不允许这样做。然后我将字符串解析为整数。这样您就可以对它们进行数学运算。您不能添加两个字符串,但可以添加两个整数。最后我从结果中显示了字符串的 Toast,因为 Toast 方法不支持 Integer 参数。
  • @MKADAIM 我检查了 "" 以避免提交空白值,以及 NumberFormatException 的异常处理。如果您在 EditText 中输入“One”而不是数字“1”,则无法解析。参考this
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    你不能添加两个字符串。字符串的+操作符取连接的意思,结果是一个字符串。您想要的可能是将字符串转换为数字并将它们相加,然后再显示结果。

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

    【讨论】:

      【解决方案4】:
          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 这是一个围棋练习而不是数值;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多