Java - 我可以在数组的索引中添加多个相同类型的项吗?

时间:2012-11-29 20:43:57

标签: java arrays arraylist

我可以在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 个答案:

答案 0 :(得分:0)

您可以使用ArrayList的Array或ArrayList。

char board[][] = new char[8][8]; // 8 is just and example

或ArrayList的ArrayList

ArrayList<ArrayList< Character >> v = new ArrayList<ArrayList< Character >>();

array of ArrayListArrayList of array

答案 1 :(得分: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);管他呢。 希望有所帮助!

答案 2 :(得分:0)

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

int[] intArray = new int[5];

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

[]  []  []  []  []

然而,有用的是使这个二维。想象一下:

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

这就是你要找的东西。这是一个2D阵列,你可以这样做。 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]

等等。

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

我希望这有帮助,

答案 3 :(得分:0)

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

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

相关问题