繁体   English   中英

简化条件

[英]Simplify a conditional

所以我在我的应用程序中有一个EditText,用户在aswer中输入。 我的问题是,当我检查输入并使用条件来检查它是否是正确答案时,它会变得过于复杂。 这是我的代码,以便您更好地理解我的问题

if (cuenta == 0) {
    if (inputbox.getText().toString().equals("Ottawa")) {
        resultadolabel.setText("Correcto");}
    else if (inputbox.getText().toString().equals("Ottawa ")) {
        resultadolabel.setText("Correcto");}
    else if (inputbox.getText().toString().equals("ottawa")) {
        resultadolabel.setText("Correcto");}
    else if (inputbox.getText().toString().equals("ottawa ")) {
        resultadolabel.setText("Correcto");}
    else {resultadolabel.setText("Respuesta correcta: Ottawa");}
}

你可以看到我要求加拿大的首都,但我希望用户能够以4种不同的方式写文本(大写字母带有空格,最后是小写,最后没有空格等等) ..)。 在我的问题出现的地方,有没有办法制作某种“if(这个条件,或其他条件或其他条件等......)

我真的需要一种方法来简化我的代码,因为它会非常长,特别是带有重音和东西的国家。

你可以使用equalsIgnoreCase()trim() ,例如:

if(inputbox.getText().toString().trim().equalsIgnoreCase("Ottawa")){
    resultadolabel.setText("Correcto");
}

你可以使用toLowerCase()trim()

if (inputbox.getText().toString().toLowerCase().trim().equals("ottawa"))

这就是我要做的事情:

if (inputbox.getText().trim().toUpperCase().equals("OTTAWA")) { ...

这显然也允许诸如“OtTaWa”和“ottawA”之类的排列,但你实在无法一个接一个地检查所有排列。 可能会引入第一个字母必须大写的规则?

请注意,您不需要toString()返回getText() - 它已经是一个String。

public static void main(String[] args) {
        String s="Ottawa ";
        s=s.trim();
        if(s.equalsIgnoreCase("ottawa"))
        {
            resultadolabel.setText("Correcto");
        }
            else {resultadolabel.setText("Respuesta correcta: Ottawa");} 
    }

尝试使用trim()条件返回字符串的副本,省略前导和尾随空格。 并使用equalsIgnoreCase()忽略案例考虑因素。

if (inputbox.getText().toString().trim().equalsIgnoreCase("ottawa")) {
                    resultadolabel.setText("Correcto");
} else {resultadolabel.setText("Respuesta correcta: Ottawa");}

使用正则表达式:

if(inputbox.getText().toString().matches("^[oO]ttawa\\s?")){
    resultadolabel.setText("Correcto");
} else{
    resultadolabel.setText("Respuesta correcta: Ottawa");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM