两种代码有什么区别
userdao dao= new userdao();ArrayList<User> list=dao.checkUser();
for (int i = 0; i < list.size(); i++) {
User u=list.get(i);
System.out.println(u.getUsername());
}
userdao dao=new userdao
ArrayList<User> list=dao.checkUser();
User u=list.get(1);
System.out.println(u.getUsername());
这两种有什么曲别,为什么 第一种就不会有错 而第二种就会出错
----------------解决方案--------------------------------------------------------
打印一下,看你get(1)得到的值不就知道了
第一种,你是循环打印了所有的值,第二种就打印一个,如果list为空的话,这是不是会产生空指针异常。另外这个怎么的你也该写个try catch吧
----------------解决方案--------------------------------------------------------
建议第一种。或者要么你什么确定那个里面都有哪些值。在什么位置,不过话说即使这样,如果突然出现其他的意外情况,比如网断了等到,还是会有问题,建议捕获一个异常信息
----------------解决方案--------------------------------------------------------
userdao dao= new userdao();
ArrayList<User> list=dao.checkUser();
for (int i = 0; i < list.size(); i++) {
User u=list.get(i);
System.out.println(u.getUsername());
}
这样做的好处在于不管list中有几个User对象,都可以打印出来,要是没有就不打印了。
实际上list中只有一个User对象。
userdao dao=new userdao();
ArrayList<User> list=dao.checkUser();
User u=list.get(1);//问题出在这个地方了,如果list中只有一个User对象,那么就不存在list.get(1),而是list.get(0).
System.out.println(u.getUsername());
正确做法应该是:
userdao dao=new userdao();
ArrayList<User> list=dao.checkUser();
if(list.size()>0)
{
User u=list.get(0);//取出第一个User对象就可以了。
System.out.println(u.getUsername());
}
----------------解决方案--------------------------------------------------------
问题已解决了 但是我用了是第二种方法 如果我只是打印值的话我会用第一种 但是我要取user对象里面的值进行判断比较 所以只能用第一种方法了
----------------解决方案--------------------------------------------------------