下面是具体的代码:请改正一下,谢谢!
 /*
     * 通过姓名删除用户信息
     */
    public boolean Delete(String name){
     boolean isDel=false;//删除是否成功
     for(Data data:list){
     if(data.getName().equals(name)){
     list.remove(name);
     isDel=true;
     }
     }
     return isDel;
    }
 /*
  * 按照指定的姓名删除用户信息
  */
 public void Delete(){
 Scanner sc=new Scanner(System.in);
 System.out.println("请输入你要删除的用户姓名:");
 String name=sc.next();
 boolean n=s.Delete(name);
 if(n==false){
 System.out.println("你要删除的用户不存在");
 }else
 System.out.println("删除用户成功!");
 }

解决方案 »

  1.   

    list.remove(data);
    应该是这样的吧
      

  2.   

    list.remove(name);
    这行没报错?
      

  3.   

     
        list.remove(data);
     
      

  4.   


       Data data = null;
       for (int i = 0 ; i < list.size();){
            data = (Data)list.get(i);
            if(data.getName().equals(name)){ 
                 list.remove(i);     
            } else {
                i++;
             }
       }
      

  5.   

    不用类型安全就不会报错,传入的是Object对象。
      

  6.   

    list.remove(data); 
    要删除一个对应的对象,而不是一个属性
      

  7.   

    Data data=null;
    int size = list.size();
    for (int i=size-1 ; i>= 0;){
            data= (Data)list.get(i);if(data.getName().equals(name)){ 
                 list.remove(i);     
            }else {
                i--;
             }
       }
      

  8.   

    重写 Data  的 equals 方法,只要 name 相同就返回 true
    这样就不需要整个循环了,直接删Data temp=new Date();
    temp.setName(name);
    list.remove(temp);
    remove方法是可以有返回值的
      

  9.   

    list.remove(data); 
    或者说list.remove(i); 
    这样才对。
      

  10.   

    嗯,修改代码后如果删除成功,会抛异常的。
    这种for循环是利用了Iterator,而集合的Iterator在迭代的时候进行增删操作后继续迭代就会抛异常。
      

  11.   


    ArrayList 只能根据索引或者对象删除
      

  12.   

    list.remove(data); 也不对吧
    想要删除不能用增强的for循环,否则会出现concurrentmodificationexception,建议用Iterator,然后用Iterator.remove()