Avatar billede baitianlong Nybegynder
14. oktober 2002 - 13:41 Der er 7 kommentarer og
1 løsning

For løkke og konkatenering...

Hvordan skrives dette lidt nemmere. Jeg kan ikke finde ud af at konkatenere i java.

Pile p1 = new Pile(100, 100, 0, 30);
    Pile p2 = new Pile(200, 100, 0, 30);
    Pile p3 = new Pile(300, 100, 0, 30);
    Pile p4 = new Pile(400, 100, 0, 30);
    Pile p5 = new Pile(500, 100, 0, 30);
    Pile p6 = new Pile(600, 100, 0, 30);
    Pile p7 = new Pile(700, 100, 0, 30);
    Pile p8 = new Pile(800, 100, 0, 30);

    p1.addCardsFrom(p, 0, 3);
    p2.addCardsFrom(p, 0, 3);
    p3.addCardsFrom(p, 0, 3);
    p4.addCardsFrom(p, 0, 3);
    p5.addCardsFrom(p, 0, 3);
    p6.addCardsFrom(p, 0, 3);
    p7.addCardsFrom(p, 0, 3);
    p8.addCardsFrom(p, 0, 3);

i flash ville man kunne lave en forløkke og skrive f.eks:

Pile this["p" + i] = new Pile......osv.

Hvad gør jeg her ?
Avatar billede baitianlong Nybegynder
14. oktober 2002 - 13:45 #1
Her er de tre opgaverækker, der naturligvis skal puttes i en forløkke:

Pile p1 = new Pile(100, 100, 0, 30);
    Pile p2 = new Pile(200, 100, 0, 30);
    Pile p3 = new Pile(300, 100, 0, 30);
    Pile p4 = new Pile(400, 100, 0, 30);
    Pile p5 = new Pile(500, 100, 0, 30);
    Pile p6 = new Pile(600, 100, 0, 30);
    Pile p7 = new Pile(700, 100, 0, 30);
    Pile p8 = new Pile(800, 100, 0, 30);

    p1.addCardsFrom(p, 0, 3);
    p2.addCardsFrom(p, 0, 3);
    p3.addCardsFrom(p, 0, 3);
    p4.addCardsFrom(p, 0, 3);
    p5.addCardsFrom(p, 0, 3);
    p6.addCardsFrom(p, 0, 3);
    p7.addCardsFrom(p, 0, 3);
    p8.addCardsFrom(p, 0, 3);

    Table.piles.addPile(p1);
    Table.piles.addPile(p2);
    Table.piles.addPile(p3);
    Table.piles.addPile(p4);
    Table.piles.addPile(p5);
    Table.piles.addPile(p6);
    Table.piles.addPile(p7);
    Table.piles.addPile(p8);
Avatar billede soreno Praktikant
14. oktober 2002 - 13:47 #2
det ville være en fordel hvis du oprettede dine objekter i et array, eks:
Pile pile[] = new Pile[8];
for(int i=0;i<pile.length;i++)
{
  pile[i] = new Pile((i*100)+100, 100, 0, 30);
  pile[i].addCardsFrom(p, 0, 3);
  Table.piles.addPile(pile[i]);
}
Avatar billede baitianlong Nybegynder
14. oktober 2002 - 13:53 #3
Her kommer de ikke til at hedde p1, p2, p3.... men pile1, pile2... ikke ?
Avatar billede soreno Praktikant
14. oktober 2002 - 13:57 #4
nej, du opretter et array af Pile objekter, disse refereres så efter deres placering i arrayet. Navnet på objektet er så pile[i], hvor i er pladsen i arrayet.
det kan ikke lade sig gøre at ændre på variabelnavne dynamisk (det du egentlig gerne vil).
Avatar billede baitianlong Nybegynder
14. oktober 2002 - 13:59 #5
Ja. Jeg skal jo bagefter kunne gøre noget ved bunken p3, i dette tilfælde pile3 ??

F.eks

pile3.doSomething();

Kan man ikke det nu ?!
Avatar billede soreno Praktikant
14. oktober 2002 - 14:01 #6
pile[3].doSomething();
Avatar billede soreno Praktikant
14. oktober 2002 - 14:02 #7
i princippet det samme som i forløkken:
pile[i].addCardsFrom(p, 0, 3);
Avatar billede baitianlong Nybegynder
14. oktober 2002 - 14:02 #8
OK. tak for hjælpen for nu !
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