两端小代码,很头疼,希望大家帮我看下。

qzezgsssbnm 2010-03-28 09:54:39
public User getUserByNameAndPw(String name,String password) {
// TODO Auto-generated method stub
Iterator it=list.iterator();
User user=null;
while(it.hasNext()){
User uu=(User)(it.next());
if(uu.getName().equals(name)&&uu.getPassword().equals(password))
user=uu;
}
return user;
}




public User getUserByNameAndPw(String name, String password) {
Iterator it = list.iterator();
while (it.hasNext()) {
User uu = (User) it.next();
//不能用== ,用equals方法进行字符串值的比较
if (name.equals(uu.getName())&&password.equals(uu.getPassword()))
return uu;
}
return null;
}


上面两端的实现方式不同,为什么用第一种不能执行,第二种就可以执行。而且第二种到底是啥意思啊?为什么在最后的return null 不会把原来的return uu,覆盖掉?还是另有大意?
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharke118 2010-03-28
  • 打赏
  • 举报
回复
1.对于第一段代码,如果while里面不加return user的话 按原来的程序 最后return 的是:a.it.next()指向的最后一个值(如果满足满足if条件) b.空值,如果不满足if条件
2.对于if的判断条件,最好把不确定是否一定不为null的对象放在equals()里面,不然的话,如果被比较的对象不存在就会出现下面的情况:
public class EqualsTest {

public static void main(String args[]){
String s = null;
if(s.equals("s")){
System.out.println("ok");
}
}
}

会报:NullPointerException 的异常,所以写成
if (name.equals(uu.getName())&&password.equals(uu.getPassword()))
更好
xiaohuanjie 2010-03-28
  • 打赏
  • 举报
回复
welllit 2010-03-28
  • 打赏
  • 举报
回复
有点看不明白是啥意思。
qzezgsssbnm 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amdgaming 的回复:]
Java code

if(uu.getName().equals(name)&&uu.getPassword().equals(password))
user=uu;


兄弟这里满足 条件了 你跳出来吧,呵呵 可以 break 就ok了
[/Quote]

嗯,是的,但是为什么这样子就不行呢?这样子貌似调试可以通过的,但是不能执行。。。为什么呢?哪里错了?
amdgaming 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amdgaming 的回复:]

Java code

if(uu.getName().equals(name)&&uu.getPassword().equals(password))
user=uu;


兄弟这里满足 条件了 你跳出来吧,呵呵 可以 break 就ok了
[/Quote]

改成这样就ok了

if(uu.getName().equals(name)&&uu.getPassword().equals(password))
user=uu;
return user;
}
return null;
xiaohuanjie 2010-03-28
  • 打赏
  • 举报
回复
第一种当然是不能执行的,

按第一种的意思,只有在if为false的时候才有返回值(return),

if为true的时候就没有返回值,

这显然是不行的,因为函数是无论如何都要求有返回值的(User)
amdgaming 2010-03-28
  • 打赏
  • 举报
回复

if(uu.getName().equals(name)&&uu.getPassword().equals(password))
user=uu;

兄弟这里满足 条件了 你跳出来吧,呵呵 可以 break 就ok了

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧