Android 我想在两个编辑文本之间建立一个等式
我想在两个编辑文本之间建立等式,并将输出放在Toast上 我试着用这种方式: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
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();