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());
}
}
}
db\student.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);
}