2011-03-06 135 views
0

我想在2D数组中分配一些值。Java二维数组问题

我有2个属性叫产品和价格。

iPad 999.9 
iPod 123.4 
iPhone 432.1 

在一维数组中,我知道如何分配产品值。

String[] product = {"iPad", "iPod", "iPhone"}; 

然而,在二维数组,如果我给你这样的:

String[][] array = new String[3][1]; 
array[0][1] = "iPad"; 

我如何分配浮点数到阵列?

此外,我有一个排序的问题。

因为我将2D数组的类型声明为String。

我可以使用此数组排序浮动价格吗?

或者我需要声明另一个数组来做排序? 谢谢

回答

8

如果您使用对象而不是阵列来存储产品,那么您将节省很多麻烦。例如,

class Product { 
    String name; 
    double price; 
} 

(必要时添加访问修饰符,制定者/ getter和构造函数)

现在,您可以轻松地访问产品阵列,而不进行类型转换。

Product[] array = new Product[3]; 
array[0] = new Product(); 
array[0].name = "iPad"; 
array[0].price = 123.4; 

或者,如果你添加的构造函数,

Product[] array = { 
     new Product("iPad", 123.4), 
     new Product("iPod", 234.5), 
     new Product("iPhone", 345.6) 
    }; 

要允许排序,你可以实现Comparable接口,然后调用Arrays.sort(myProductArray)

class Product implements Comparable<Product> { 
    String name; 
    double price; 

    public int compareTo(Product p) { 
     return ((Double) price).compareTo(p.price); 
    } 
} 
+0

我会建议服用仿制药的优势,使产品扩展可比较。 – 2011-03-06 03:31:52

+0

@ZachLangley谢谢,更新。 – 2011-03-06 03:33:59