2013-02-26 111 views
0

维数组我有这样的:两种不同类型

private float dir = 0f; 
private boolean ch = true; 
private String = "No"; 
private int aB = 5; 

如何我现在,让这个值的二维数组? 例如array1[][]

{ {0f, "true", "No", 5} } 

或者我应该制作一个这样的数组?

private String array1[][]; 

保存所有的值作为String,然后parse每个项目?

但我认为,这不是一个好的编程。

+6

使用一堂课,卢克。 – dmon 2013-02-26 21:21:15

+0

班?怎么样...?请给我一些例子。 – Johnny 2013-02-26 21:23:05

+2

'class Blah {float dir;布尔值ch = true; ...} private Blah [] array;' – dmon 2013-02-26 21:24:15

回答

2

您可以使用抽象数组,IE使用Object作为类型。

Object array1[][]; 

但是,这看起来更像是你真的想要一个班级。

class MyObject { 
    private float dir; 
    private boolean ch; 
    private String str; 
    private int aB; 
// getters and setters omitted 
} 

然后用下面的命令创建一个数组或集合:MyObject[] array1。如果你可以存储对象,这通常是更好的设计。

0

使用对象而不是基元,例如

Object[][] vars = {{ new Float(0f); Boolean.TRUE, "No", new Integer(5) }} 

但是,我不得不质疑为什么你真的需要这样做,可能是一个设计缺陷?

+0

你的意思是... private Object array1 [] [];? – Johnny 2013-02-26 21:24:25

0

大多数情况下,混合这样的值并不是一个好主意。它被称为锯齿状的数组,许多语言让你这样做。理论上没问题,但实际上可能会使以后维护代码变得非常困难。

你一般都想用事实上的描述性变量来定义事物。由于Java是一种强类型语言,您可能希望创建一个具有这些值作为成员变量的类,然后创建该类的数组。然后如果你有任何特殊的操作,使你可以制作处理这些值的特殊方法。

这有道理吗?

相关问题