这是我的类声明了一个Squares数组,出于某种原因,当我调用(Car car) -> "red".equals(car.getColor() && "100".equals(car.getPower())
方法(在另一个类中)时,它返回null。
我的GetGameBoardSquare()
方法有问题吗?或者说我宣布广场的方式有问题吗?
GetGameBoardSquare()
答案 0 :(得分:9)
您的For
循环不对。它永远不会在你的代码中循环。像这样:
for (int i = 1; i <= 55; i++)
{
//your code
}
答案 1 :(得分:0)
值得一提的是,除了明显的for
循环错误之外,整个班级都非常容易出错。
首先,如果未调用SetUpBoard
,则无法正常运行。由于它看起来像是一个静态不可变信息,所以最好使用初始化器或静态构造函数使私有数组只读并完全初始化它。
其次,在该设置中,很难看到发生了什么。如果你搞砸了什么的话。例如,看起来Square
类构造函数的第二个参数是索引,但不在此行中gameBoard[55] = new Square("Finish", 56);
它可能是有意的,但更可能是一个错误。
这是一个避免所有陷阱的例子:
public static class Board
{
const int N = 56;
private static readonly Square[] gameBoard =
Enumerable.Range(0, N).Select(n => CreateSquare(n)).ToArray();
static Square CreateSquare(int n)
{
switch (n)
{
case 0:
return new Square("Start", n);
case N - 1:
return new Square("Finish", n);
case 4:
case 14:
case 24:
case 34:
case 44:
return new Square.Lose_Square("Lose Square", n);
case 5:
case 17:
case 35:
case 47:
return new Square.Chance_Square("Chance Square", n);
case 9:
case 19:
case 29:
case 39:
case 49:
return new Square.Win_Square("Win Square", n);
default:
return new Square("Ordinary Square", n);
}
}
public static Square GetGameBoardSquare(int n)
{
return gameBoard[n];
}
public static Square StartSquare()
{
return gameBoard[0];
}
public static Square NextSquare(int n)
{
return gameBoard[n + 1];
}
}
当然还有很多其他方法可以做到这一点,但switch
语句允许您轻松地重新排列其中的内容,使您不再使用重复索引并且可读。