Avatar billede eds Nybegynder
16. december 2008 - 22:22 Der er 11 kommentarer og
1 løsning

Hjælp til array

Hej.
Jeg har følgende kode:

import java.awt.*;
public class grid {

    public static void main(String[] arg)
    {
        //Vi definerer punkt b (0,0)
        Point b = new Point();
       
        Point[] list = new Point[256];
        int n1 = 1;
        int n2 = 1;
        int count = 0;
        while (n2 <= 16)
        {
        //Vi definerer hjælpepunkt
        Point v = new Point(n1,n2);       
       
        b.move(v.x , v.y);
        list[count] = b;
        System.out.println(count+": "+b.x + "," + b.y);
        count = count + 1;
        n2 = n2 + 1;
       
           
        if (n2 == 17)
          {
            n2 = 1;
            n1 = n1 + 1;
           
            if (n1 == 17)
            {
                n2 = 48488485;
            }
          }

        }
        System.out.println(list[5]);
    }

}

Denne gennemløber alle punkter fra 1,1 til 16,16. Jeg forsøger at smide hvert enkelt punkt ind i et array, men når jeg kalder punktet der skal ligge på plads 5, får jeg 16,16 og dette er jo det sidste punkt. Og det var jo egentlig punktet 1,6 vi skulle have fat i når vi kalder list[5].
Hvordan kan det være?

På forhånd tak.
Avatar billede arne_v Ekspert
16. december 2008 - 22:27 #1
Dit array indeholder 256 referencer til b. b har naturligvis den sidste vaerdi.

Proev og smid v ind i arrayet i.s.f..
Avatar billede arne_v Ekspert
16. december 2008 - 22:27 #2
PS: Burde n1 og n2 ikke lave smed 2 for loekker ?
Avatar billede eds Nybegynder
16. december 2008 - 22:38 #3
Ah ja, det er selvfølgelig v jeg skal bruge. Hvad vil fordelen ved to for-løkker være? Er min metode mere regnetung eller hvad?
Og kan list[5] behandles som et punkt? Kan jeg f. eks. lave noget i retningen af list[5].move(2 , 6) ?
Avatar billede arne_v Ekspert
16. december 2008 - 22:41 #4
2 for loekker vil give en meget simplere kode !
Avatar billede eds Nybegynder
16. december 2008 - 22:43 #5
Hvordan skulle det så gøres? Skulle man køre den ene løkke inde i den anden?
Avatar billede arne_v Ekspert
16. december 2008 - 22:44 #6
import java.awt.*;

public class Grid {
    public static void main(String[] arg) {
        Point[] list = new Point[256];
        for(int n1 = 0; n1 < 16; n1++) {
            for(int n2 = 0; n2 < 16; n2++) {
                list[n1*16+n2] = new Point(n1+1,n2+1);
            }
        }
        System.out.println(list[5]);
    }
}
Avatar billede eds Nybegynder
16. december 2008 - 22:54 #7
Ah okay cool.
Men når jeg kalder list[5], kan jeg så behandle det som et punkt? Kan jeg lave noget i retning af System.out.println(list[5].move(2 , 6)); ?
Avatar billede arne_v Ekspert
16. december 2008 - 22:56 #8
Ja
Avatar billede eds Nybegynder
16. december 2008 - 23:00 #9
Hmm.
Når jeg forsøger mig med System.out.println(list[5].move(2 , 6));
Får jeg:
The method println(boolean) in the type PrintStream is not applicable for the arguments (void)
Avatar billede arne_v Ekspert
16. december 2008 - 23:04 #10
System.out.println(list[5]);
list[5].move(2 , 6);
System.out.println(list[5]);
Avatar billede eds Nybegynder
16. december 2008 - 23:06 #11
Glimrende så virker det som det skal. Tak skal du have!
Smid et svar og du skal få dine point.
Avatar billede arne_v Ekspert
16. december 2008 - 23:10 #12
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