我在java/android studio中编写了一个计算器,遇到了每个数字只需要一个小数点的问题。比如1.2而不是1.2.3。允许用户在计算器中使用小数或自然数,但是,一旦用户按下点(“.”)符号,就不能对该特定数字重复此操作。
我编码它来显示错误(这不起作用),而不是显示错误,用户不应该能够添加另一个小数点后的第一个数字。它需要为1.1 + 1.1工作,但不为1.1.1。或1.1。等
我试着把它作为代码的一部分,但它不起作用。就像,它一直禁用我的等于按钮,即使我已经写了它的第一个警告后。
Pattern p;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
p = Pattern.compile("(\\d*(\\.\\d*)?([+\\-*%\\]|$))*");
UserInput = findViewById(R.id.ed_calculation_input);
UserInput.setShowSoftInputOnFocus(false);
tvCalculationOutput = findViewById(R.id.tv_calculation_output);
edUserInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Matcher m = p.matcher(edUserInput.getText().toString());
if(!m.matches()) {
edUserInput.setError("Enter valid no");
btnEqual.setEnabled(false);
} else {
btnEqual.setEnabled(true);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
字符串
1条答案
按热度按时间6psbrbz91#
这个问题的解决方案相当简单。您已经选择了
EditText
作为数字的输入,对吗?然后您所要做的就是添加这一行字符串
在xml布局文件中,防止数字具有多个小数点(或字母或其他符号)。