基于输入Java更改阵列初始化

时间:2012-12-05 04:09:26

标签: java arrays string multidimensional-array

我有一个2d布尔数组,我想根据输入的内容动态创建它的大小。 例如:我将此字符串作为输入“0-1 0-2 1-2 1-3 2-3”。我将它拆分为破折号并将其解析为int。所有这些坐标都是布尔数组中的位置。当我为这个例子初始化下面的数组时,它可以工作。但是,如果输入发生变化,我怎么能动态地初始化它呢?

myArray = new boolean [4][4];

3 个答案:

答案 0 :(得分:3)

如果必须使用固定大小的数组,则可以分别找到每个坐标的max值,并使用这些值进行初始化:

int maxR = 0, maxC = 0;
for (String pair : pairs) {
    int r = ... // first part of the split
    int c = ... // second part of the split
    maxR = Math.max(maxR, r);
    maxC = Math.max(maxC, c);
}
boolean[][] myArray = new boolean[maxR][maxC];

答案 1 :(得分:0)

您可以使用ArrayLists。您可以根据需要增长它们。 (收缩它们更难。)

答案 2 :(得分:0)

将字符串拆分为空格,“” 它会给你总坐标数。

   String[] splitted = "0-1 0-2 1-2 1-3 2-3".split(" ");

遍历数组,拆分“ - ”并获取maxX和maxY。 这将为您提供数组的尺寸。

声明就像

boolean[][] myArray = new boolean[maxX][maxY];

希望有所帮助