Avatar billede mads375 Juniormester
04. december 2013 - 18:54 Der er 12 kommentarer og
1 løsning

ArrayList problem igen

Hejsa

Arne har godt nok hjulpet mig igennem et ligende problem, men forstår ikke helt hvorfor jeg ikke kan få det til at fungere. Der er følgende stump kode:

import java.util.ArrayList;

public class Test {

    private ArrayList<Person> persons;

    public Test() {
        persons = new ArrayList<Person>();
    }
   
    public void addPerson(Person p) {
        persons.add("Mads");
       
    }
}

Jeg laver en feltvariabel, intialiserer den i min konstruktor og laver en metode til at add en person. Den eneste fejl der kommer er ved: persons.add("Mads");
Fejlen hedder:

"The method add(Person) in the type ArrayList<Person> is not applicable for the arguments
(String)"

Hvad er det jeg gør galt?

Mvh Mads
Avatar billede FastEthernet Novice
04. december 2013 - 19:21 #1
Du har defineret din ArrayList til at tage imod elementer af typen Person, ikke en String, hvorfor du ikke vil kunne gøre som du gør her:

persons.add("Mads");

I stedet skal linjen se ud som følger:

persons.add(p);
Avatar billede mads375 Juniormester
04. december 2013 - 19:27 #2
Tak for det hurtige svar. Så burde det virke med dette her så?:

import java.util.ArrayList;

public class Test {

    private ArrayList<String> persons;

    public Test() {
        persons = new ArrayList<String>();
    }
   
    public void addPerson() {
        persons.add("Mads");
       
    }
}

Får samme fejl her nemlig
Avatar billede FastEthernet Novice
04. december 2013 - 19:35 #3
Er det præcis samme fejlmeddelelse du får?
Avatar billede mads375 Juniormester
04. december 2013 - 20:27 #4
Jeg får denne fejl:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    Syntax error on token(s), misplaced construct(s)
    Syntax error on token "String", @ expected

    at Array_Manual.main(Array_Manual.java:8)
Avatar billede FastEthernet Novice
04. december 2013 - 20:39 #5
Hvordan ser koden i din main-metode ud? Udfra fejlmeddelelsen ser det ud som om der er en fejl i den.
Avatar billede mads375 Juniormester
04. december 2013 - 20:43 #6
Altså nu ved jeg godt du kommer til at korse dig, når jeg skriver dette her. Men jeg har kun denne ene klasse faktisk. Jeg skal oprette en anden klasse med min:

public static void main(String[]args) {

}

og lave noget derinde? :-/
Avatar billede FastEthernet Novice
04. december 2013 - 20:51 #7
Ja, du skal lave en ny klasse hvori du tilføjer din main-metode.

Jeg testede lige din kode i Eclipse uden at få nogen fejl, så hvis det ikke løser problemet at oprette main-metoden, har du højst sandsynligt en fejl et andet sted.
Avatar billede mads375 Juniormester
04. december 2013 - 21:02 #8
Ok tak for det. Fra min main metode kan jeg så tilføje strings til min arrayliste, ikke?
Avatar billede mads375 Juniormester
04. december 2013 - 21:03 #9
Eller altså hvad er det lige jeg skal skrive i min main metode?
Avatar billede FastEthernet Novice
04. december 2013 - 21:07 #10
Ja, i din main-metode kan du arbejde med Test-klassen og andre klasser du eventuelt måtte have i dit projekt, f.eks.:

Test t = new Test() // Opretter en ny instans af Test-klassen
t.addPerson() // Kalder metoden addPerson i Test-klassen
Avatar billede mads375 Juniormester
04. december 2013 - 21:16 #11
:-/ Jep ok det hele virker nu mange tak for hjælpen. Så vil jeg sidde og lege med lidt forskellige kald fra main klassen etc.

Så det vil egentligt sige at når et java program bliver kørt, så bliver main klassen kaldt, hvorefter programmet kører og der bliver via main klassen kaldt metoder fra alle mulige forskellige klasser?
Lige en aller sidste ting. Det der sker her:

Test t = new Test();
       
t.addPerson();

Er at du laver en objektreference og så kører metoden addPerson. Er det rigtig forstået? Husk at ligge et svar og mange tak for hjælpen.

Mvh Mads
Avatar billede FastEthernet Novice
04. december 2013 - 21:22 #12
Ja, begge ting er helt rigtigt forstået :-)
Avatar billede mads375 Juniormester
05. december 2013 - 12:25 #13
Ok super. Mange tak for hjælpen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester