2014-04-30 2 views
-2

Я просто хочу, чтобы он выполнял итерацию через мой arraylist и отображался один раз, если пользователь не найден, или один раз, если пользователь найден.IF-ELSE Итерация: String.contains() терпит неудачу каждый раз

Мой код работает нормально.

Только это позволяет воспринимать его как пользователя users.txt с 3 пользователями.

username:password:number 
test1:pass1:123 
test2:pass2:456 
test3:pass3:789 

Так что, когда я использую этот код и перебирать мой ArrayList

for (Users u: userDetails) { 
    if (!u.getUser().toLowerCase().contains(userName.toLowerCase())) { 
     System.out.println("Does not exist"); 
    } else { 
     System.out.println("Exist"); 
    } 
} 

Приведенный выше код повторяется 3 раза «Не существует», если я ввести недопустимое имя пользователя. Кто-нибудь может просветить меня по этому поводу?

+2

что ваш вопрос? –

+1

Что сказал отладчик? Имеются ли значения? – displayname

+0

Каково значение 'userName'? –

ответ

3

Вы можете использовать флаг переменные:

boolean userExists = false; // flag 

for (Users u: userDetails) { 
    if (u.getUser().toLowerCase().contains(userName.toLowerCase())) { 
     System.out.println("Exist"); 
     userExists = true; // update flag 
    } 
} 

// check if user doesn't exist 
if (!userExists) 
    System.out.println("Does not exist"); 
+0

спасибо, и это сработало отлично! – John

3

Вы можете попробовать это так:

public static void checkUserExistence(Collection<Users> userDetails) { 
    for (Users u: userDetails) { 
     if (u.getUser().toLowerCase().contains(userName.toLowerCase())) { 
      System.out.println("Exist"); 
      return; 
     } 
    } 
    System.out.println("Does not exist"); 
} 
+0

Второй оператор 'System.out.println()' был неверным. Извините, я сделал редактирование на лету. Теперь он должен быть исправлен. – Harmlezz

+0

Я пробовал, и он работал так же хорошо, как и выше. Спасибо! – John

Смежные вопросы