[JAVA] Wat gaat hier fout bij het vullen van een array

Pagina: 1
Acties:

  • Appesteijn
  • Registratie: Juni 2001
  • Niet online
Ik ben bezig een array te vullen volgens de onderstaande code en kom er even niet meer uit
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public void startRecon()
    {
        //search for interesting spots
        myLocation = maze.agentLoc;
        exitLocation = maze.exit;
        creditLocationArray = new Point[Integer.parseInt(chips.numberOfCredits.getText())] ;
    
        if( Integer.parseInt(chips.numberOfCredits.getText()) == 0)
        {
            //move(myLocation, exitLocation);
        }
        else
        {
            int i;
            int j;
            
            for(i=0; i<20; i++)
                for(j=0; j<20; j++)
                {
                    if(maze.rooms[i][j].content == 9)
                    {
                        int x = 0;
                        creditLocationArray[x] = new Point(i,j);
                        System.out.println("Looking for credits: "+creditLocationArray[x]);
                        x++;
                    }
                    
                        
                        
                }
            
            for(int c =0; c < creditLocationArray.length; c++ )
                System.out.println("Looking for credits: "+creditLocationArray[c]);
                        
            closestCreditFromList(creditLocationArray);
            //move(closestCredit,myLocation);
            
            
            
        }
        
        
    }


De eerste System.out.println (regel 24) geeft keurig "Looking for credits: java.awt.Point[x=4,y=7]" (en dat dan voor 11 verschillende Points.)
De tweede System.out.println (regel 33) geeft echter 1 keer "Looking for credits: java.awt.Point[x=14,y=9]" (het laatste Point van de eerste System.out.println) en verder alleen maar null's

De array wordt helemaal in het begin van de file "Point[] creditLocationArray;" gedefinieerd.

Er gaat dus iets mis bij het vullen van de array met Points. Maar wat doe ik nu fout?

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 11-02 14:42
int x = 0;

staat op de verkeerde plek... hij vult iedere keer positie 0 in de array.

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Het feit dat je array index x altijd 0 is aangezien 1 regel boven er staat int x = 0 ?

  • Appesteijn
  • Registratie: Juni 2001
  • Niet online
OMG, wat een stomme fout. Maar ja, uren naar de code staren is dus niet goed voor mijn probleemoplossend vermogen. Thx.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12-02 15:05

Robtimus

me Robtimus no like you

Appesteijn schreef op zondag 24 september 2006 @ 12:33:
Java:
1
2
3
creditLocationArray = new Point[Integer.parseInt(chips.numberOfCredits.getText())] ;
    
if( Integer.parseInt(chips.numberOfCredits.getText()) == 0)
Kleine tip: sla de return waarde 1x op, en gebruik die dan. Nu ben je 2x exact hetzelfde aan het doen. Soms maakt dat vrij weinig af, maar zodra de berekening wat langer wordt of er objecten gecreeerd worden is het echt beter maar 1x de functie aan te roepen.

Vergelijk:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
public List getData() {
    // get data from some database and return it as a List
}

....

if (getData().size() == 0) {
    // do something if there are no elements
} else {
    for (Iterator i = getData().iterator(); i.hasNext(); ) {
        // do something with all elements
    }
}
Op deze manier spreek je dus 2x je database aan, wat natuurlijk niet de bedoeling is.

More than meets the eye
There is no I in TEAM... but there is ME
system specs