[英]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.