2014-04-30 63 views
-2

我只是想让它遍历我的数组列表,并且如果找不到用户,或者如果找到用户,则只显示一次。IF-ELSE迭代:String.contains()每次都失败

我的代码工作正常。

只是让我们把它作为我的users.txt有3个用户。

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

所以,当我使用这个代码,并遍历数组列表我

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