【发布时间】:2016-11-12 10:01:01
【问题描述】:
我想在注册新用户时检查用户名是否已被使用,所以我有一个带有Vector<Users> 的类,我在其中保存所有用户及其参数。但是当我使用我的函数usernameExist(String nuovo) 时,它只将列表中的第一个用户名与我插入的字符串进行比较。我还实现了Serializable 接口,所以我每次都可以加载我的用户列表,但它工作正常。如果我使用迭代器来读取所有列表,我没有问题,但是使用 for-each 循环的每个函数都不起作用。
//Constructor
public UsersList()
{
list = new Vector<User>();
}
//The method i use to check if the username exist
public boolean usernameExist(String nuovo)
{
for(User user : lista)
{
return user.matchUsername(nuovo);
}
return false;
}
//In the class User
//Constructor of User
public User(String nome, String cognome, String email, String username, String password)
{
//Variable initialization
}
public boolean matchUsername(String inserted)
{
return username.equalsIgnoreCase(inserted);
}
这让我发疯了 :D,谢谢你的帮助!
【问题讨论】:
-
几乎总是这样,您可以通过在调试器中单步执行此代码来了解它的运行方式。使用调试器不是一项高级技能,而是一项应该尽快学习和使用的基本技能。
-
通常,当您使用新的包或技术时,似乎这种新技术一定是您的问题的原因,而您经常忘记了一些更基本的东西,例如使用
if语句。即这与序列化无关。 -
@T.J.Crowder 我认为 OP 错误地认为它与序列化有关,但看不到如何(因为它不是)。我通常建议 OP 使用调试器,但 OP 已经描述了无论如何你可以在调试器中看到的内容。调试器不会告诉您如何编写代码。 ;)
-
@PeterLawrey:不,但是如果您在调试器中运行它并在第一次迭代时跳过该 return 语句并发现自己离开了该函数,那么这是一个关于问题所在的重要线索。 :-)
-
@TJCrowder OP 已经注意到“仅将列表中的第一个用户名与字符串进行比较”但是你是对的,在调试器中应该需要几秒钟的时间才能完成,而时间要少得多例如,比写这个问题。 ;)
标签: java loops serialization foreach deserialization