我这里有一个关于我的程序的问题。我想接受有关我的编辑文本的一系列值。
我想要发生的是接受 1-50 之间的值。但我不知道我会怎么做。我已经设置了 int,但它不起作用。谁能帮我?
这是我的简单代码:
REDIRECT.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String Amount = txtbox1.getText().toString();
if(Amount.equals(Here is the range of values that i want to accept from 1-50 numbers only))
{
final Intent i = new Intent(MainActivity.this, Redirect.class);
startActivity(i);
}
else
{
Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_LONG).show();
}
}
});
不要为此使用 equals
:
try{
int a=Integer.parseInt(txtbox1.getText().toString());
if(i<=50&&i>=1){
//it's in the range. Handle it
}
}catch(NumberFormatExcepion e){
//handle invalid input
}
String.equals()
只会检查一个String
参数的相等性。你无法改变这一点。如果你想匹配许多字符串中的一个,也许在.equals()
上写一个循环,如下所示:
private boolean matchesOneOf(String string, String[] strings) {
for(String thisString : strings) {
if(string.equals(thisString)) {
return true;
}
}
return false;
}
或者最好使用现有的库类方法,如List.contains()
List<String> strings = new ArrayList<String>();
strings.add("1");
strings.add("2");
strings.add("3");
...
strings.add("50");
if(strings.contains(txtbox1.getText().toString())){
// do stuff if value is in the list of strings you specified
}
无论如何,从此示例的外观来看,您不想要一个String
,而是amount
的数字类型(可能是int
)。然后,例如,使用< > <= >=
运算符进行范围检查变得简单得多。