所以我的应用程序中有一个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种不同的方式写文本(大写字母带有空格,小写字母是没有空格的结束等。)。 在我的问题出现的地方,是否有办法制作某种“如果(这种情况,或其他条件或其他条件等等)
我真的需要一种方法来简化我的代码,因为它会非常长,特别是有口音和东西的国家。
答案 0 :(得分:3)
您可以使用equalsIgnoreCase()
和trim()
,例如:
if(inputbox.getText().toString().trim().equalsIgnoreCase("Ottawa")){
resultadolabel.setText("Correcto");
}
答案 1 :(得分:0)
您可以使用toLowerCase()
和trim()
if (inputbox.getText().toString().toLowerCase().trim().equals("ottawa"))
答案 2 :(得分:0)
这就是我要做的事情:
if (inputbox.getText().trim().toUpperCase().equals("OTTAWA")) { ...
这显然也允许诸如“OtTaWa”和“ottawA”之类的排列,但你实在无法一个接一个地检查所有排列。可能会引入第一个字母必须大写的规则?
请注意,您不需要toString()
getText()
的返回 - 它已经是一个字符串。
答案 3 :(得分:0)
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");}
}
答案 4 :(得分:0)
尝试使用trim()
的条件返回字符串的副本,省略前导和尾随空格。并使用忽略案例考虑的equalsIgnoreCase()
。
if (inputbox.getText().toString().trim().equalsIgnoreCase("ottawa")) {
resultadolabel.setText("Correcto");
} else {resultadolabel.setText("Respuesta correcta: Ottawa");}
答案 5 :(得分:0)
使用正则表达式:
if(inputbox.getText().toString().matches("^[oO]ttawa\\s?")){
resultadolabel.setText("Correcto");
} else{
resultadolabel.setText("Respuesta correcta: Ottawa");
}