Как проверить, что логическое значение false - PullRequest
0 голосов
/ 04 сентября 2018

Я новичок в Java. Пожалуйста, помогите мне для ниже

Мне нужно напечатать «Ошибка аутентификации», когда логическое значение false. Но приведенный ниже код отображает как Успешные, так и Неудачные сообщения, даже если аутентификация прошла успешно. *

switch(choice){
            case 1:
                System.out.println("Enter the username");
                String name = scan.nextLine();
                System.out.println("Enter the password");
                String password = scan.nextLine();
                Boolean result = true;
              for(Account a :accountArray )
              {
                     result = a.authentication(name, password);
                    if(result)
                    {
                        System.out.println("Authentication successful");
                    }
                    else
                    {
                        result=false;
                    }


                }
               if(!result)
              {
                  System.out.println("Authentication failed");
              }

              break;

*

Current Output:
Enter the username
vicky
Enter the password
vicky123
Authentication successful
Authentication failed

1 Ответ

0 голосов
/ 04 сентября 2018

Из результатов, которые вы показываете, может показаться, что у вас более одного Account в accountArray, и происходит то, что одна из учетных записей в массиве совпадает, а последняя - нет. Таким образом, когда вы перебираете accountArray, он устанавливает result в соответствии с этой учетной записью. Успешно работает одна из учетных записей в массиве (вы печатаете «Проверка подлинности успешна» один раз), а последняя не совпадает. После цикла вы печатаете «Аутентификация не удалась», так как последняя проверка установила result в false.

Вероятно, вы хотите, чтобы он поставил break; после печати «Аутентификация прошла успешно» - как только вы найдете подходящую учетную запись, вы сделали, и не хотите смотреть ни на одну из последующих учетных записей в векторе , Но так как вы никогда не говорите, что на самом деле пытаетесь сделать, трудно сказать.

Кроме того, предложение else в цикле является избыточным - оно выполняется, если result равно false, поэтому повторное задание значения false не имеет смысла. Ваш код также оставит результат как true, если accountArray пуст, и не будет печатать какое-либо сообщение; это может быть или не быть разумным.

...