This site requires JavaScript, please enable it in your browser!
Greenfoot back
fishwaffles1337
fishwaffles1337 wrote ...

2012/7/19

Finding the length of a list.

fishwaffles1337 fishwaffles1337

2012/7/19

#
I used the getNeighbors method to return a List of things one cell away and that all works fine. Now I want to have it check the number of things in each List how would I do that? This is what I have so far.
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
44
45
46
47
48
49
50
51
52
53
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
import java.lang.String;
 
/**
 * Write a description of class Cell here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
 
public class Cell extends Actor
{
     
    public List neighbors;
     
    /**
     * Act - do whatever the Cell wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act()
    {
        lookForCells();
        //testStuff();
    }   
 
    /**
     * Find out how many cells are next to the cell.
     */
    public List lookForCells()
    {
       List neighbors = getNeighbours (1, true, null);
       return neighbors;
        }
 
    /**
     * This is just a test chunk remove later.
     */
    public void testStuff()
    {
        if (neighbors > 1){
        displayText();
      }
    }
 
    /**
     * Writes out the given text.
     */
     public void displayText()
     {
         Greenfoot.stop(); //I realize this isn't text.
     }
    }
Builderboy2005 Builderboy2005

2012/7/19

#
You should check out the List API if you have questions about Lists :D In general if you are looking for a specific function you can generally find it by searching for the API. In this case, the size() method will return the size of the list.
fishwaffles1337 fishwaffles1337

2012/7/19

#
Thank you so much I worked all night on that and couldn't figure it out , and that didn't exactly what it was supposed to do but now I get a null pointer exception. Here is the revised 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
44
45
46
47
48
49
50
51
52
53
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
import java.lang.String;
 
/**
 * Write a description of class Cell here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
 
public class Cell extends Actor
{
     
    public List neighbors;
     
    /**
     * Act - do whatever the Cell wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act()
    {
        lookForCells();
        testStuff();
    }   
 
    /**
     * Find out how many cells are next to the cell.
     */
    public int lookForCells()
    {
       List neighbors = getNeighbours (1, true, null);
       return neighbors.size();
        }
 
    /**
     * This is just a test chunk remove later.
     */
    public void testStuff()
    {
        if (neighbors.size() > 1){
        displayText();
      }
    }
 
    /**
     * Writes out the given text.
     */
     public void displayText()
     {
         Greenfoot.stop(); //I realize this isn't text.
     }
    }
danpost danpost

2012/7/19

#
The problem is that line 32 creates a new variable called neighbors, and does not assign the list to the class field called neighbors. Therefore, line 41 will always return 'false', because the size of the class field is never populated. Easy fix, change line 32 to:
1
neighbors = getNeighbours(1, true, Cell.class);
By not declaring the variable here (no casting of type), the class field will be used. Also, by specifying 'Cell.class' as the class to list, only neighboring cells will be listed. One more thing, I am not sure why you asked if the size was greater than one. I have a feeling you meant greater than zero (if any neighboring cells exist).
You need to login to post a reply.