我有这种方法,可以在登录前检查用户名和密码。现在,我的for循环仅检查第一个项目,它发现第u.getRole().equalsIgnoreCase("recruiter")
一个项目不满足第一个条件,因此与其去检查第二个项目,它只是中断并返回null。
为什么会这样?
这是我的方法:
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;
}
break;
}
} catch (HibernateException e) {
rollback();
throw new AdException("Unfound " + userName, e);
}
return null;
}
for (User u: list) {
if (u.getRole().equalsIgnoreCase("recruiter")) {
//sysout
if (u.getUserName().equalsIgnoreCase(userName) && u.getPassword().equalsIgnoreCase(password))
//2 sysout
return u;
}
break; //here break statement will exit your loop just after first Iteration.
}
因此,请尝试此代码。
for (User u: list) {
if (u.getRole().equalsIgnoreCase("recruiter")) {
//sysout
if (u.getUserName().equalsIgnoreCase(userName) && u.getPassword().equalsIgnoreCase(password)){
//2 sysout
return u;
} else{
//your code if password doesnot matched
}
// continue even if more than one recruiter type User Object are in Database.
}else{
//your code if user Role doesnot matched
}
} //loop will check all element present in that array. and if it's ROLE is matched like "Recuriter" then it will check user and password.
问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成
为什么比: memcmp是CPU指令还是什么?它一定很深,因为我在循环中使用获得了巨大的加速。
问题内容: 我有一个整数列表,我正在运行-loop来发现两个元素的总和是否等于另一个变量。所以,如果是等于和我有一个整数列表: ,那么函数应该打印所有数字的不同组合,。 我感觉自己快到了,但是当我使用该功能时,列表中发生了一些奇怪的事情。下面的代码用于显示所有需要计算的数字组合,但是列表中的所有其他元素都被跳过。 这是输出: 请注意如何,,,和被跳过。我正在使用第二个-loop不会使用原始值,然后
问题内容: 我想知道对for循环中的最后一个元素进行特殊处理的最佳方法(更紧凑和“ pythonic”的方法)。有一段代码只应 在 元素 之间 调用,而在最后一个代码中被禁止。 这是我目前的操作方式: 有什么更好的办法吗? 注意:我不希望使用hack之类的东西。 问题答案: 在大多数情况下,使第 一个 迭代成为特殊情况而不是最后一个案例更容易(且更便宜): 这将适用于任何迭代过程,即使对于那些没有
问题内容: 我想检查一个变量是否具有多个值之一。我对为什么在这种情况下不起作用感到困惑。我正在按照给出该示例的教程进行操作,但是当我尝试执行此操作时,它只会根据第一个值检查变量。我的支票怎么了? 问题答案: (“Jesse” or “jesse”) 上面的表达式测试是否评估为。如果是这样,则表达式将返回它;否则,它将返回。该表达式等同于编写: 因为是一个非空字符串,所以它将 始终 求值为并因此返回
我想写一个计算长除法问题总进位的代码。这是我为carries编写的函数。我相信问题在于,第一个while循环并没有一直运行。如果是,为什么?这是在Python 3.5中实现的。