2012-10-25 32 views
0
public class BusInformation { 

String BusRoute[][] = new String[4][]; 

BusRoute[0] = new String[] {"a" , "b", "c"}; 

BusRoute[1] = new String[] {"a" , "b"}; 
} 

我知道第一个参数中有多少个BusRoutes。第二个参数大小是可变的,取决于路线。 我该如何初始化它?初始化未知尺寸的多维/锯齿字符串数组

+0

它会正常工作。您是否尝试过? –

+0

我认为您需要发布更多代码我们了解上下文,你发布的代码不会编译,我假设数组初始化是在一个构造函数中完成的,是否有输入参数决定“第二个参数”的大小? –

回答

1

你应该能够给它这样的代码......

public class BusInformation { 
    String busRoute[][] = new String[4][0]; 

    public BusInformation(){ 
     busRoute[0] = new String[] {"a" , "b", "c"}; 
     busRoute[1] = new String[] {"a" , "b"}; 
    } 
} 

它与您的代码,但愿意为第二维指定0的初始大小,只是让其明确表示,没有任何初始大小。我还将数组的加载包装到类构造函数中。

二维数组只是一个普通的一维数组,其中每个项目是任意长度的数组。即使您将2D数组设置为初始大小(例如new String[4][5]),它也没有什么区别 - 您仍然可以将更小或更大的数组分配给基本数组中的每个项目,就像您已经在做的一样。

+0

Thanx帮助:) –

+0

欢迎。如果您认为答案有帮助,您可以点击左侧的“向上”箭头,以便人们知道它有所帮助。如果答案解决了你的问题,你也可以“勾选”它作为接受的答案。 – wattostudios

0

如果大小在变量初始化时是未知的,那么在这里可能数组不是最好的选择。我有两个建议,一个使用的Lists数组或使用番石榴的Multimap

如果你真的想/需要继续使用二维数组,如上所述初始化(或者与第一组元素或作为一个空数组),当你需要添加值时,使用Arrays.copyOf创建一个新的数组副本,以允许添加新的元素。

0

如果你问一个硬连接的初始化,您的代码可以更简明地写成这样:

public class BusInformation { 
    String BusRoute[][] = new String[][]{ 
     {"a" , "b", "c"}, 
     {"a" , "b"}, 
     null, 
     null 
    }; 
} 

但要注意,有多少初始化构造的方法可以做硬性限制。 (这是与一个方法的字节码必须符合64k字节的事实有关。)

如果您询问从文件中读取数据(例如)初始化数组,然后它基本上是工作的问题数组需要多大,创建它们并填写它们的值。 (例如,您可能会将数据读入列表中,然后转换为2-D数组表格。