Java 显示输入到EditText中的值与常量之和
例如1+2=3,但我得到1+2=12 这是我的密码Java 显示输入到EditText中的值与常量之和,java,android,Java,Android,例如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=(EditTex
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;
}
}
你有一根绳子。一个字符串+另一个字符串=字符串。 例如hello+you=helloyou 因此,将字符串解析为整数并开始计算。将其更改为
ed1.setText(Integer.parseInt(ed.getText().toString())+2);
而不是
ed1.setText(ed.getText().toString()+2);
试试这个
ed1.setTextInteger.parseInted.getText.toString+2 您正在尝试将两个字符串合并,因此输出是组合的。在执行任何算术运算时,将字符串解析为整数,然后将它们相加
int result=Integer.parseInt(ed.getText().toString())+2);
ed1.setText(String.valueOf(result);
如果在字符串和整数之间使用+运算符,则整数将转换为字符串,并附加到字符串的末尾 让我们看一个你现在正在做什么的例子:
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,它会引发异常,因此您应该小心。您可能需要在EditText的xml上设置属性android:inputType=numberSigned。这将强制用户在EditText中只插入整数。
像这样:
<EditText
android:id="@+id/editText1"
android:inputType="numberSigned"
... />
没有理由的否决票是无用的。