如何解决需要帮助从正常对象数组中删除特定对象
| 我一直在做作业问题……到目前为止,仅使用数组我无法将数组中的对象设置为空对象,因此无法删除它。我有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 举报,一经查实,本站将立刻删除。