如何通过方法类将值和字符串输入到类数组中?

时间:2014-09-30 02:45:47

标签: java arrays class vector

当我尝试通过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语句。它也将发生在它下面的三条线的其余部分。

确保输入作为数组放入类中的正确方法是什么?

4 个答案:

答案 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 ++)

祝你好运!!!!!!