当我尝试通过addContact方法添加联系人信息时,它应该提示我输入姓名,电话号码和地址。然后信息存储在类数组中。
当触发addContact时,它会发出:
Contact[] contacts;
public void addContact(Contact c)
{
String name = "";
long number = 0000000000;
String comment = "";
if(isFull());
incrementCapacity();
size++;
for (int i = 0; i <= contacts.length; i++)
{
if(contacts[i] == null)
{
contacts[i].setName(name);
contacts[i].setPhoneNumber(number);
contacts[i].setComment(comment);
}
}
}
相反,它会发出错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at VectorOfContacts.addContact(VectorOfContacts.java:71)
at Driver2.main(Driver2.java:20)
第71行是if(contacts [i] == null)。如果我删除if语句。它也将发生在它下面的三条线的其余部分。
确保输入作为数组放入类中的正确方法是什么?
答案 0 :(得分:0)
问题在下面一行:
for (int i = 0; i <= contacts.length; i++)
<{1>}中的索引从Java
开始到小于0
的长度,因此for循环中的变量contacts.length-1
必须小于i
< / p>
更改为:
contacts.length
答案 1 :(得分:0)
你的for循环在这里有点小问题:
for (int i = 0; i <= contacts.length; i++)
你正在迭代直到我&lt; = contacts.length。数组索引从0
运行到length-1
。所以你需要将你的循环改为:
for (int i = 0; i < contacts.length; i++)
答案 2 :(得分:0)
在java索引中从0开始但长度从1开始。所以你应该将for循环中的Condition更新为
i<contacts.length
我希望您通过空的联系人项目初始化并填充数组,如果您填写了联系人项目,则联系[i] == null'是错误的。然后你应该寻找像这样的内部接触[i]对象。
contacts[i].getName().equals("") && contacts[i].getNumber().equals("") && contacts[i].getNumber()==0000000000
。否则像这样使用
Contact[] contact=new Contact[3]
public void Add(Contact c){
for(int i=0;i<contact.length;i++){
if(contact[i]==null){
contact[i]=c;
}
}
}
答案 3 :(得分:0)
在Java中,计算数组的长度从1开始。但计算元素的索引从0开始。这意味着,认为你有一个包含10个元素的数组, 数组的长度为10 第1个元素的索引是0 最后一个元素的索引是9
根据您的代码,您尝试使用contacts [length] th元素进行访问,但最后一个元素的索引是contacts [length - 1]。这就是为什么你得到一个&#34; ArrayIndexOutOfBoundsException&#34;。
将for循环更改为, for(int i = 0; i&lt; contacts.length; i ++)
祝你好运!!!!!!