如何为 .equals() 设置可接受的数值;命令



我这里有一个关于我的程序的问题。我想接受有关我的编辑文本的一系列值。

我想要发生的是接受 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)。然后,例如,使用< > <= >=运算符进行范围检查变得简单得多。

相关内容

最新更新