0

我可以在java中的数组索引中添加多个相同类型的项目吗?我正在尝试用 java 制作一个双陆棋程序,但我不知道如何创建棋盘。我需要在一个位置存储“检查器”,5 个检查器。我可以在一个索引中存储 5 个项目吗?例如。array[1] = {a,b,c,d,e}. 如果我不能用数组做到这一点,有没有其他方法可以做到这一点。

这就是我所拥有的:(我现在没有颜色。只有变量 homeWhite 表示白人,homeBlack 表示黑人)

  //other methods omitted

 /**
 *  a method to set the default board design and layout of the game.
 */
private void newBoard()
{

    homeWhite = 0;
    homeBlack = 0;
    barWhite = 0;
    barBlack = 0;
    private int [] stoneCounts = new int[25];

    stoneCounts[0]  = 5*homeWhite;
    stoneCounts[11] = 2*homeWhite;
    stoneCounts[16] = 3*homeWhite;
    stoneCounts[18] = 5*homeWhite;
    stoneCounts[23] = 5*homeBlack;
    stoneCounts[12] = 2*homeBlack;
    stoneCounts[7]  = 5*homeBlack;
    stoneCounts[5]  = 3*homeBlack;
    stoneCounts[24] = barWhite = barBlack;

    System.out.println(stoneCounts[0]+"===="+ stoneCounts[1]+"===="+stoneCounts[2]+"===="+stoneCounts[3]+"===="+ stoneCounts[4]+"===="+stoneCounts[5]+"===="+ 
    stoneCounts[6]+"===="+stoneCounts[7]+"===="+stoneCounts[8]+"===="+stoneCounts[9]+"===="+ stoneCounts[10]+"===="+stoneCounts[11]);
    System.out.println("");
    System.out.println("");
    System.out.println("Bar: "  + stoneCounts[24]);
    System.out.println("");
    System.out.println("");
    System.out.println(stoneCounts[12]+"===="+ stoneCounts[13]+"===="+stoneCounts[14]+"===="+ stoneCounts[15]+"===="+stoneCounts[16]+"===="+ stoneCounts[17]+"===="
    +stoneCounts[18]+"===="+stoneCounts[19]+"===="+stoneCounts[20]+"===="+ stoneCounts[21]+"===="+stoneCounts[22]+"===="+stoneCounts[23]);
}
4

3 回答 3

0

由于您有一定数量的空间和每个空间上的可变数量的块,我会推荐一个 ArrayLists 数组:

ArrayList<Piece>[] spaces = new ArrayList<Piece>[numSpaces];

for(int i=0; i<numSpaces; i++){
   spaces[i] = new ArrayList<Piece>();
}

这假设您有一个 Piece 类,它可以存储作品的颜色或任何其他信息。然后每当你想添加一块,你可以做空格[i].add(piece); 管他呢。希望有帮助!

于 2012-11-29T20:48:46.310 回答
0

好的,您可以考虑两种方法。首先,您可以创建一个二维数组。从您的问题中我不确定您在数组中究竟想要什么类型的信息,但是例如,如果我们假设您希望创建一个二维整数数组,那么您可以将代码调整为您喜欢的方式,您只需要要做的是将类型 (int) 更改为其他类型,例如 String 或 char。这只是帮助您制作 2​​D 数组并了解其工作原理的一般信息。

int[] intArray = new int[5];

这将为您创建一个整数数组,最多可以接受 5 个不同的值。您将拥有 intArray[0]、intArray[1]、intArray[2]、intArray[3] 和 intArray[4]。您可能希望将其可视化为 5 个空格,如下所示:

[]  []  []  []  []

然而,有帮助的是使这成为二维的。想象一下:

[] [] [] [] []
[] [] [] [] []
[] [] [] [] []

这就是你要找的。这是一个二维数组,您可以像这样制作。int[][] intArray = new int[3][5];

现在,你只需要小心地跟踪你把东西放在哪里。你可以把东西放到数组的这些位置:

intArray[0][0]
intArray[0][1]
intArray[0][2]
intArray[0][3]
intArray[0][4]

但是由于它是二维的,您可以这样做:

intArray[1][0]
intArray[1][1]

等等。

另一种方法是使用对象并为您的项目创建一个对象,然后创建这些对象的数组。

我希望这有帮助,

于 2012-11-29T20:50:39.530 回答
0

我的建议是你做一个更面向对象的方法,扩展 awolfe91 的答案。我建议开设一个课程Position,您可以在其中存储有关每个位置有多少棋子以及这些棋子颜色的信息。那么你只需要一个数组Position

例如,在Position该类中,您可以具有canAddChecker(color)例如可以返回布尔值的方法,如果将该颜色的检查器添加到该位置是有效的。

于 2012-11-29T21:02:59.147 回答