2014-09-30 62 views
0

當我嘗試通過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); 
      } 

     } 
    } 

相反,它散發出錯誤71

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at VectorOfContacts.addContact(VectorOfContacts.java:71) 
    at Driver2.main(Driver2.java:20) 

線是如果(聯繫人[I] == NULL)。如果我刪除if語句。它會在下面三行的其餘部分發生。

確保輸入作爲數組放入類中的正確方法是什麼?

+0

我發佈我的答案是否解決了你的問題? – 2014-09-30 04:51:01

+0

是的,但是,我真正要問的是如果有一種方法可以將字符串輸入到類對象中 – user3062918 2014-09-30 05:08:11

+0

您能告訴我將字符串輸入到類對象中的真正含義嗎? – 2014-09-30 05:22:29

回答

0

問題將在下文行:

for (int i = 0; i <= contacts.length; i++) 

索引在從0Java開始小於長度,該長度contacts.length-1,所以可變i內部的for循環必須小於contacts.length

更改爲:

for (int i = 0; i < contacts.length; i++) 
0

你的for循環是一個小錯誤在這裏:

for (int i = 0; i <= contacts.length; i++) 

您正在迭代,直到我< = contacts.length。數組索引從0運行到length-1。所以,你需要你的循環更改爲:

for (int i = 0; i < contacts.length; i++) 
0

在java中的索引從0開始的循環啓動,但長度開始從1所以,你應該更新條件,以

i<contacts.length 

我希望你能和初始化通過空的聯繫人項目填充數組,如果填充了聯繫人項目的聯繫人[i] == null'是錯誤的。那麼你應該尋找這樣的內部聯繫[我]的對象。

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; 
      } 
    } 
} 
0

在Java中,計數陣列的長度從1開始計數,但元素的索引從0這意味着,認爲你必須具有10個元素的陣列開始,陣列的 長度是第一元件10 指數是0 索引的最後一個元素的是9

根據你的代碼,你正在試圖與聯繫人[長度]個元素來訪問,但最後一個元素的索引是聯繫人[長度 - 1]。這就是爲什麼你會得到一個「ArrayIndexOutOfBoundsException」。

變化for循環爲,對於 (INT I = 0;我< contacts.length;我++)

好運!!!!!!

相關問題