0

首先,我对我提出这个问题的方式感到非常抱歉。这是在我的班级正在做的练习回顾中出现的,我真的不知道它要求什么或如何开始。这是问题:

GridWorld 中的 Grid 对象具有 getNumRows 和 getNumCols 方法,它们分别返回网格中的行数和列数。Grid 对象还有一个 get(Location, loc) 方法,该方法返回位置 loc 处的 actor,如果该位置未被占用,则返回 null。编写一个方法,返回网格中 Flower 对象的数量。

朝着正确方向的任何推动都会很棒,再次抱歉,这个问题被问得多么糟糕。谢谢你。

4

2 回答 2

4

像这样的东西可能是你正在寻找的东西。不确定程序的正确性,因为我不熟悉 GridWorld 或代码中的其他对象。

然而,基础是双循环,循环遍历每一行,每一行循环遍历列,从而覆盖整个网格。

如您所见,我将isFlowerAt方法留空,因为我不知道grid.get()会返回什么。

int counter = 0;
for (int row  = 0; row < grid.getNumRows(); row++) {
    for (int col = 0; col < grid.getNumCols(); col++) {
        if (isFlowerAt(grid, row, col)){
            counter++;
        }
    }
}
return counter;

private boolean isFlowerAt(Grid grid, int row, int col) {
    //Return true if a flower is located at (row, col)
}
于 2014-01-22T00:35:41.047 回答
0

这是另一种实现方式:

public class Grid {

private int numRows;
private int numCols;
private List<Location> locations;

public Grid() {
    this.locations = new ArrayList<Location>();
}

public Flower get(Location loc) {
    Flower flower = null;
    for(Location location: locations) {
        if(location.getRowValue() == loc.getRowValue() 
                && location.getColValue() == loc.getColValue()) {
            flower = location.getFlower();
            break;
        }
    }
    return flower;
}

public int getTotalFlowers() {
    int total = 0;
    for(Location location: locations) {
        if(location.getFlower()!=null) {
            total++; 
        }
    }
    return total;
}

// ... put your getters and setters here

}

这是 Location 类

public class Location {

private int rowValue;
private int colValue;
private Flower flower;

// ... put your getters and setters here

}

假设您将使用 Locations 填充网格,其中一些位置将有花,而有些则没有。

于 2014-01-22T02:55:45.587 回答