Почему, если утверждение всегда возвращает истину? - PullRequest
0 голосов
/ 29 октября 2018

Мое утверждение 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();
                }

Что я делаю не так?

Результатом этого кода является диалог о том, что университет уже существует.

1 Ответ

0 голосов
/ 29 октября 2018

Компилятор прав, и значение будет true из-за следующего:

Эта строка ниже, имеет ; в конце: удалите ее, и она будет работать как положено.

if(u.getDesc().trim().toLowerCase().equals(addUniDesc.getText()
                                         .toString().trim().toLowerCase()));

; завершает область действия if в этом контексте. Это означает, что «область действия» ниже:

{ 
    exists = true;
}

всегда будет выполняться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...