需要帮助从正常对象数组中删除特定对象

如何解决需要帮助从正常对象数组中删除特定对象

| 我一直在做作业问题……到目前为止,仅使用数组我无法将数组中的对象设置为空对象,因此无法删除它。我有3种方法,一种添加对象的方法,一种从数组返回特定​​对象的方法,一种删除方法。到目前为止,添加和返回对象的方法都可以使用..但是删除方法不起作用...有些帮助对象? 这是数组和方法的类...我正在测试main方法中的方法
public class Book {

    public void addContact(Contact[] contactBook)
    {
        int slots = 0;
        for(Contact i : contactBook)
            if (i == null)
                slots++;

        if(slots == 0)
            System.out.println(\"Contact book full..can\'t add anymore!\");

        else
        {
            String name = Keyboard.readString(\"Enter name: \");
            int id = Keyboard.readInt(\"Enter \"+name+\"\'s id: \");
            String classroom = Keyboard.readString(\"Enter \"+name+\"\'s class: \");
            int number = Keyboard.readInt(\"Enter \"+name+\"\'s mobile: \");

            for (int i = 0; i < contactBook.length; i++)
            {
                if(contactBook[i] == null){
                    contactBook[i] = new Contact(name,id,number,classroom);
                    break;
                }
            }
        }//end else

    }//end method

    public Contact getContact(Contact[] contactList)
    {
        Contact contact = null;
        int id = Keyboard.readInt(\"Enter student id: \");

        try
        {
            for(Contact i : contactList)
            {
                if(i.id == id)
                {
                    contact =i;
                    break;
                }
            }
        }
        catch(NullPointerException e)
        {
            System.out.println(\"Student ID:\"+id+\" does not exist..\");
        }

        return contact;
    }//end getContact

    public void deleteContact(Contact[] contactList)
    {
        Contact delete = getContact(contactList);

        for(Contact i : contactList)
        {
            if(i!=null)
                if(delete.id == i.id)
                {
                    i = null;
                    break;
                }
        }
    }//end delete

    public static void main(String args[])
    {
        Contact[] contacts = new Contact[200];
        Book newBook = new Book();

        newBook.addContact(contacts);

        for (Contact i : contacts)
            if(i != null)
                System.out.println(i);

        newBook.deleteContact(contacts);

        for (Contact i : contacts)
            if(i != null)
                System.out.println(i);
    }
}
这是对象的类     公开课联系方式{
    String name;
    String classroom;
    int id;
    int number;

    Contact(String name,int id,int number,String classroom)
    {
        this.name = name;
        this.id = id;
        this.number = number;
        this.classroom = classroom;
    }

    public String toString()
    {
        return \"\"+name+\",student id: \"+id+\" class:\"+classroom+\" mobile:\"+number;
    }

}
    

解决方法

        迭代器的确将引用的副本返回给Contact对象。您将此副本设置为null,而不是存储在数组中的对象。 使用这样的东西:
for(int i=0; i<contactList.size; i++) {
    if(delete.id == contactList[i].id) {
        contactList[i] = null;
        break;
    }
}
    ,        我认为您不能以这种方式使用增强的for循环。您应该只使用普通的for循环并执行
contactList[i] = null
,其中i是索引。这是一些准则 适合每个人的地方 尽管增强的for循环可以使代码更清晰,但不能在某些常见情况下使用。 只能访问。元素不能 分配给,例如,不增加 集合中的每个元素。 只有单一结构。不是 可以穿越两个 一次构造,例如,进行比较 两个数组。 仅单个元素。仅用于 单元素访问,例如,不访问 比较连续的元素。 只有前进。有可能 仅单步迭代 脚步。至少Java5。请勿使用 如果您需要与 Java 5之前的版本。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?