for(int i=0;i<all.size();i++)
{
if(all.get(i).getSno().equals(sno))
{
System.out.println("正在删除的是:"+all.get(i).getSno());
all.remove(i);
flag=true;
}
}
for (int i = 0; i < all.size(); i++)
{
System.out.println("正在保存的是:"+all.get(i).getSno());
String sno2= all.get(i).getSno();
String sname=all.get(i).getSname();
String sex=all.get(i).getSex();
int age=all.get(i).getAge();
String info=sno2+"#"+sname+"$"+sex+"^"+age+";";
//调用写入数据的方法
try {
studentDao.saveFile("db\\student.txt",info,true);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
for(int i=0;i<all.size();i++)
{
if(all.get(i).getSno().equals(sno))
{
System.out.println("正在删除的是:"+all.get(i).getSno());
all.remove(i);
flag=true;
}
else
{
System.out.println("正在保存的是:"+all.get(i).getSno());
String sno2= all.get(i).getSno();
String sname=all.get(i).getSname();
String sex=all.get(i).getSex();
int age=all.get(i).getAge();
String info=sno2+"#"+sname+"$"+sex+"^"+age+";";
//调用写入数据的方法
try {
studentDao.saveFile("db\\student.txt",info,true);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
}
dbstudent.txt中原本有
1001#Lucy1$男^33;
1002#Lucy2$男^33;
1003#Lucy3$男^33;
1004#Lucy4$男^33;
数据,然后通过编号1001来删除这条数据,然后把剩下的数据重新写到student.txt中,可是第一种方法中用if——else中如果删除1001这条记录,最后剩下的数据中有1003和1004这两条数据,用两个for循环正常这是为什么?
for循环里面你对List进行了remove,这种有remove的需要从大往小,如果从小到大,remove后会报错。
for(int i=all.size()-1;i>=0;i--){
all.remove(i);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。