2013-10-27 21 views
12

Chcę dodać obiekt do obiektu ArrayList, ale za każdym razem, gdy dodaję nowy obiekt do obiektu ArrayList z 3 atrybutami: objt(name, address, contact), pojawia się błąd.Jak dodać obiekt do tablicy ArrayList w języku Java

import java.util.ArrayList; 
import java.util.Scanner; 
public class mainClass { 
    public static void main(String args[]){ 

     Scanner input = new Scanner(System.in); 
     System.out.println("Plz enter Name : "); 
     String name = input.nextLine(); 
     System.out.println("Plz enter Address : "); 
     String address = input.nextLine(); 
     System.out.println("Plz enter ContactNo : "); 
     String contact = input.nextLine(); 


     ArrayList<Data> Contacts = new ArrayList<Data>(); 
     Data objt = new Data(); 
     Contacts.add(objt.Data(name, address, contact)); 
    } 
} 

Tutaj Data jest klasa, która Próbuję utworzyć obiekt i przekazać go do ArrayList.

public class Data { 

     private String name = ""; 
     private String address = ""; 
     private String cell = ""; 


     public void Data(String n, String a, String c){ 

      name = n; 
      address = a; 
      cell = c; 
     } 
     public void printData(){ 

      System.out.println("Name\tAddress\tContactNo"); 
      System.out.println(name + "\t" + address + "\t" + cell); 
     } 
} 
+1

Co zawiera pływający średnik? –

+0

Jaki błąd dostałeś? – Raedwald

Odpowiedz

30

trzeba użyć operatora new podczas tworzenia obiektu

Contacts.add(new Data(name, address, contact)); // Creating a new object and adding it to list - single step 

albo

Data objt = new Data(name, address, contact); // Creating a new object 
Contacts.add(objt); // Adding it to the list 

a konstruktor nie powinny zawierać void. W przeciwnym razie staje się metodą na twojej klasie.

public Data(String n, String a, String c) { // Constructor has the same name as the class and no return type as such 
+0

Również OP powinien pisać konstruktor w swojej klasie. –

+0

dzięki alot sir @ R.J .. – Johnfranklien

1

Spróbuj tego:

Data objt = new Data(name, address, contact); 
Contacts.add(objt); 
0

Musisz użyć operatora new tutaj instancji. Np

Contacts.add(new Data(name, address, contact)); 
-1

Data zmiany do przedmiotu, który ma w nawiasie

+2

Która data? To nie wygląda na rozwiązanie dla mnie. – Jonathan

+0

Myślę, że chodziło o 'Dane', ale nie wygląda na to, że ten użytkownik wraca. –

1

Contacts.add (objt.Data (nazwa, adres, kontaktowe));

To nie jest doskonały sposób wywoływania konstruktora. Konstruktor jest wywoływany w momencie automatycznego tworzenia obiektu. jeśli nie ma konstruktora klasa java Tworzy własny konstruktor.

Dokładny sposób jest:

danych obiekt1 = nowe dane (nazwa, adres, kontaktowe);

// Tworzenie obiektu.

Contacts.add (obiekt1);

// Dodawanie obiektu danych do obiektu ArrayList Kontakty.

Powiązane problemy