我希望用户输入金额,如果它包含任何字母或符号等,我想拒绝输入。换句话说,我希望它只包含数字。我想出的一个解决方案如下.
final EditText numberField = (EditText) findViewById(R.id.Cost);
if(numberField != null) {
test = numberField.getText().toString();
}
if(test.isEmpty()) {
Toast.makeText(this, "Tutar alanını doldurunuz", Toast.LENGTH_SHORT).show();
}else if(test.contains("a")||test.contains("b")
} else {
cost = Integer.parseInt(test.trim());
}
我认为这可行,但是编写从 test.contains("a") 到 test.contains("z") 的所有内容,并且符号太长,使代码看起来非常糟糕。我怎样才能实现我的目标?
最佳答案
如果您不想添加任何额外的库,您可以定义一个额外的方法,如下所示:
public boolean isDecimal(String str) {
try {
Double.parseDouble(str);
}
catch(NumberFormatException ex) {
return false;
}
return true;
}
当然,这将允许小数(我假设您在谈论金钱时需要小数) - 如果您只想要整数,请改用 Integer.parseInt()
。
然后你的else if
行变成:
else if(isDecimal(test))
关于java - 在JAVA中对字符串使用Contains方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38165500/