我的 if 语句将存在的名称与输入的名称进行比较,即使我知道我输入的名称不存在,它也会返回 true。它还说 if 语句有一个空的主体。
boolean exists = false;
for(University u : uniList)
{
if(u.getDesc().trim().toLowerCase().equals(addUniDesc.getText().toString().trim().toLowerCase()));
{
exists = true;
}
}
if(!exists)
{
Map<String, Object> user = new HashMap<>();
user.put("Desc", addUniDesc.getText().toString());
db.collection("university")
.add(user)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Snackbar.make(btnAddUni, "Added", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
addUniDesc.setText("");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Snackbar.make(btnAddUni, "Failed", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
else
{
AlertDialog.Builder builder1 = new AlertDialog.Builder(new ContextThemeWrapper(getContext(), R.style.myDialog));
builder1.setTitle("University already exists")
.setMessage("Change something!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
builder1.create();
builder1.show();
}
我究竟做错了什么?
这段代码的结果是大学已经存在的对话框。
编译器是对的,该值将是true
由于以下原因:
下面这一行;
的末尾有一个:删除它,它将按预期工作。
if(u.getDesc().trim().toLowerCase().equals(addUniDesc.getText()
.toString().trim().toLowerCase()));
的;
结束if
在这方面的范围。这意味着下面的“范围”:
{
exists = true;
}
将永远被执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句