Avatar billede ultragames Nybegynder
24. oktober 2004 - 23:38 Der er 18 kommentarer og
1 løsning

antal instancer i klasse

hej experter.. jeg er ny i java.. så det kan måske godt være mine udtryk ikke er helt korrekte :O

vis jeg bruger en constructor til at oprette en instans af min klasse Forfatter:

Forfatter f = new Forfatter("dannie");

hvis jeg nu har lavet 8 forskellige forfattere.... hvordan kan jeg tælle det antal?
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:40 #1
Du laver en static variabel som du tæller op i constrcutor.
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:42 #2
public class Forfatter {
  private static int antal = 0;
  ...
  public Forfatter() {
      antal++;
  }
  ...
  public static int getAntal() {
      return antal;
  }
}
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:42 #3
Forfatter f1 = new Forfatter();
Forfatter f2 = new Forfatter();
Forfatter f3 = new Forfatter();

og Forfatter.getAntal() vil returnere 3
Avatar billede ultragames Nybegynder
24. oktober 2004 - 23:49 #4
ja tak :D:..  må jeg så være så frælk at spørge hvordan jeg kan udskrive samtlige forfattere ? :)
Avatar billede fastpoint Nybegynder
24. oktober 2004 - 23:53 #5
for(int i = 0; i < 8; i++)
{
System.out.println(f+i);
}

skal måske være... System.out.println((f+i));

eller også

public String udskriv()
{
System.out.println(f1);
System.out.println(f2);
System.out.println(f3);
System.out.println(f4);
System.out.println(f5);
System.out.println(f6);
System.out.println(f7);
System.out.println(f8);
return "";
}
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:53 #6
Normalt vel man gemme dem udenfor klassen.

ArrayList alle = new ArrayList();
Forfatter f1 = new Forfatter();
all.add(f1);
Forfatter f2 = new Forfatter();
all.add(f2);
Forfatter f3 = new Forfatter();
all.add(f3);

man kunne også gemme en reference til alle instanser i en static variabel i selve
klassen.

Jeg tror ikke at jeg vil anbefale den løsning.

Men jeg kunne godt lave et eksempel.

I morgen.
Avatar billede fastpoint Nybegynder
24. oktober 2004 - 23:55 #7
vil lige sige denne kode også var til array..

for(int i = 0; i < 8; i++)
{
System.out.println(f[i]);
}

så ved ikke om

for(int i = 0; i < 8; i++)
{
System.out.println(f+i);
}

virker
Avatar billede ultragames Nybegynder
24. oktober 2004 - 23:56 #8
hmm!.. problemet er at alle mine forfattere har samme navn :S... alle hedder Forfatter Forfatter =new Forfatter();
Avatar billede fastpoint Nybegynder
24. oktober 2004 - 23:57 #9
så overwriter de vel hele tiden hinanden?
Avatar billede ultragames Nybegynder
24. oktober 2004 - 23:57 #10
hmm!.. hvordan kan jeg så lave 3 FORSKELLIGE forfatter.. når de genereres i en while?..
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:58 #11
Det skal du have lavet om på.

Min anbefaling vil være at gemme dem i en ArrayList.
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:59 #12
ArrayList alle = new ArrayList();
while(noget) {
  Forfatter f = new Forfatter();
  alle.add(f);
}

virker fint !
Avatar billede arne_v Ekspert
24. oktober 2004 - 23:59 #13
Når du vil have fat på dem igen så gør du bare:

for(int i = 0; i < alle.size(); i++) {
  Forfatter f = (Forfatter)alle.get(i);
  // gør noget med f
}
Avatar billede fastpoint Nybegynder
25. oktober 2004 - 00:00 #14
og vælger du den løsning skal du huske at importere Arraylist... ligger i java.util mener jeg
Avatar billede ultragames Nybegynder
25. oktober 2004 - 00:00 #15
det vil sige.. jeg kan godt kalde dem alle f.. men det er bare ikke smart?... og hvad er alternativet?
Avatar billede arne_v Ekspert
25. oktober 2004 - 00:00 #16
[kunne laves lidt fixere i Java 1.5/5 men skidt pyt med det]
Avatar billede arne_v Ekspert
25. oktober 2004 - 00:00 #17
Hvis du gemmer dem i en ArrayList er det ligegyldigt havd de hedder da de gemmes
på position og hentes frem igen på position (se 23:59:50 koden).
Avatar billede ultragames Nybegynder
25. oktober 2004 - 00:02 #18
TUSIND TAK arve_V... det var sq kanon du gad hjælpe.. igen igen ;)... smider du et svar? :)
Avatar billede arne_v Ekspert
25. oktober 2004 - 00:03 #19
svar
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