例如(1 + 2 = 3)但我得到(1 + 2 = 12)。
这是我的代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText ed=(EditText)findViewById(R.id.editText1);
final EditText ed1=(EditText)findViewById(R.id.editText2);
ed.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
ed1.setText(ed.getText().toString()+2);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:2)
你有一个字符串。一个String +另一个String = StringString。 E.g"你好" +"你" =" helloyou&#34 ;;
因此将String解析为Integer并开始计算。
答案 1 :(得分:2)
您正在尝试连接两个字符串,因此将输出组合在一起。在执行任何arithmetic operation
时,将字符串解析为整数,然后添加它们。
int result=Integer.parseInt(ed.getText().toString())+2);
ed1.setText(String.valueOf(result);
答案 2 :(得分:0)
将其更改为
ed1.setText(Integer.parseInt(ed.getText().toString())+2);
而不是
ed1.setText(ed.getText().toString()+2);
答案 3 :(得分:0)
试试这个
(的Integer.parseInt(ed.getText()的toString())+ 2)ed1.setText;
答案 4 :(得分:0)
如果在字符串和整数之间使用运算符“+”,则整数将转换为字符串,并且它将附加到字符串的结尾。
让我们看看你现在在做什么的一个例子:
String a = "1";
int b = 2;
System.out.println(a+b);
控制台输出:12
以及你应该做什么:
int a = 1;
int b = 2;
System.out.println(a+b);
控制台输出:3
解决此问题的最简单方法是更改您的代码:
public void onTextChanged(CharSequence s, int start, int before, int count) {
ed1.setText(String.valueOf(Integer.parseInt(ed.getText().toString) + 2));
}
注意:解析未经检查的字符串是非常危险的,如果解析的字符串不是int,它会抛出异常,因此您应该小心。您可能希望在android:inputType="numberSigned"
的xml上设置属性EditText
。这将强制用户仅在EditText
中插入int号
像这样:
<EditText
android:id="@+id/editText1"
android:inputType="numberSigned"
... />