您的代码和逻辑错误。 u
在for-each
循环的迭代期间不会更改,它在每次迭代后都会更改。您的println
声明表明您认为u
将在第一个嵌套if
声明期间发生变化。因为:
System.out.println("userName 1 is :" + u.getUserName());
和:
System.out.println("userName 2 is :" + u.getUserName());
出现在同一if
块,嵌套在for-each
循环:
if (u.getRole().equalsIgnoreCase("recruiter")) {
System.out.println("userName 1 is :" + u.getUserName());
if (u.getUserName().equalsIgnoreCase(userName) && u.getPassword().equalsIgnoreCase(password))
System.out.println("After if recruiter is: " + u);
System.out.println("userName 2 is :" + u.getUserName());
return u;
}
你也不需要使用一个break
或continue
声明。您不需要break
声明,因为您有一个return
声明。您不需要continue
声明,因为这是一个循环。
还要注意,没有大括号的if
语句({ ... }
)仅执行直接在它下面的行。例如:
if (u.getUserName().equalsIgnoreCase(userName) && u.getPassword().equalsIgnoreCase(password))
System.out.println("After if recruiter is: " + u);
您的代码应类似于:
public User check(String userName, String password) throws AdException {
try {
begin();
Query q = getSession().createQuery("from User");
ArrayList<User> list = (ArrayList<User>) q.list();
System.out.println("recruiterList is: " + list);
for (User u: list) {
System.out.println("Before if user is: " + u);
if (u.getRole().equalsIgnoreCase("recruiter")) {
System.out.println("userName 1 is :" + u.getUserName());
if (u.getUserName().equalsIgnoreCase(userName) && u.getPassword().equalsIgnoreCase(password)) {
System.out.println("After if recruiter is: " + u);
// System.out.println("userName 2 is :" + u.getUserName());
return u;
}
}
}
} catch (HibernateException e) {
rollback();
throw new AdException("Unfound " + userName, e);
}
return null;
}
如果你想有一个println
声明输出当前用户名的指标是什么,那么就不要使用for-each
使用经常的for
循环。例如:
public User check(String userName, String password) throws AdException {
try {
begin();
Query q = getSession().createQuery("from User");
ArrayList<User> list = (ArrayList<User>) q.list();
System.out.println("recruiterList is: " + list);
for (int i = 0; i < list.length; i++) {
System.out.println("Before if user is: " + u);
if (u.getRole().equalsIgnoreCase("recruiter")) {
System.out.println("userName " + (i + 1) + " is :" + u.getUserName());
if (u.getUserName().equalsIgnoreCase(userName) && u.getPassword().equalsIgnoreCase(password)) {
System.out.println("After if recruiter is: " + u);
return u;
}
}
}
} catch (HibernateException e) {
rollback();
throw new AdException("Unfound " + userName, e);
}
return null;
}
你有一个'return'语句;你的'if'必须评估为'true'(或你'break')。 –