使用不同的数据类型填充数组

时间:2014-09-01 14:52:49

标签: java arrays

我需要用不同的数据类型填充数组

InvoiceItem[] invoiceItems;
int test = 3;
int i = 0;

这需要在数组中:

InvoiceItem invoiceItem = new InvoiceItem();
invoiceItem.setItemType("TestItem");
invoiceItem.setArticleNo("TestItemID");
invoiceItem.setDescription("TestDescription");
invoiceItem.setQty(1);
invoiceItem.setPrice(new BigDecimal(20.00));
invoiceItem.setVat(new BigDecimal(5.0));

有可能存在多个InvoiceItem(test = 3),因此它需要处于循环中。

它必须是一个数组,我需要将它传递给另一个只接受数组的类。

我怎样才能实现这个目标?

修改:我会尝试更清楚地说明问题:

我需要知道如何把这些

invoiceItem.setItemType("TestItem");
invoiceItem.setArticleNo("TestItemID");
invoiceItem.setDescription("TestDescription");
invoiceItem.setQty(1);
invoiceItem.setPrice(new BigDecimal(20.00));
invoiceItem.setVat(new BigDecimal(5.0));
数组中的

int countofInvoiceItem = 3; // there are 3 InvoiceItem 

InvoiceItem[] invoiceItems = new InvoiceItem[countofInvoiceItem];

可以有多个InvoiceItem。

方法如下:

public final ResponseCreateInvoice CreateInvoice
(Invoice Invoice, InvoiceItem[] InvoiceItems, Address DeliveryAddress, Address InvoiceAddress, String UserID, String Password)

(这是给定的,我无法改变)

并返回

ResponseCreateInvoice inv = wsClient.createInvoice(invoice, invoiceItems, deliveryAddress, invoiceAddress, userID, password);

我是Java(或数组)的新手,所以这可能是一个简单的问题,但我真的不明白。在数组中将字符串和Int,BigDecimal等混合在一起也很重要吗?

4 个答案:

答案 0 :(得分:1)

您只需要将数组声明为T类型的数组,其中T是要填充它的所有对象类的超类。在最糟糕的情况下,它会是Object,但它的设计是10次中的9次。

答案 1 :(得分:1)

我建议您制作课程,其中包含您需要的所有内容,如下所示:

public class YourClass{

int id;
double value;
String description;
//and so on

//create getters and setters
}

您可以使用此类将对象数组传递给另一个类。

Put your objects of the class in the Array

例如

YourClass[] objects = new YourClass[SIZE];//define number of objects you need

您可以将每个对象单独或整体传递给另一个类。

在你的接收课中,你可以有一个构造函数:

public YourRecievingClass(YourClass[] object){
//and recieve here as you need; ask further if you need help here too
} 

我认为这是采用的最好方式,尽管你的问题不是100%明确

答案 2 :(得分:0)

使用哪些类型的数据?通常,您可以使用:

Object[] myArray;

所有类都是Object的子类。

答案 3 :(得分:0)

根据您的修改,您的原始问题不在基础上。您不希望创建不同类型的数组,而只想创建一个一种类型和一种类型的数组,即InvoiceItems数组。您将对象属性与数组项混淆,并且它们不是同一个。这段代码在这里:

invoiceItem.setItemType("TestItem");
invoiceItem.setArticleNo("TestItemID");
invoiceItem.setDescription("TestDescription");
invoiceItem.setQty(1);
invoiceItem.setPrice(new BigDecimal(20.00));
invoiceItem.setVat(new BigDecimal(5.0));

是您要更改单个InvoiceItem 的属性的地方。

您的InvoiceItem类似乎包含项目类型的字符串字段,商品编号,描述,数量的int字段,价格的BigDecimal字段和VAT的BigDecimal字段。所以你的数组看起来就像:

InvoiceItem[] invoiceItems = new InvoiceItem[ITEM_COUNT]; // where ITEM_COUNT is 3

您可以使用for循环来创建项目:

for (int i = 0; i < invoiceItems.length; i++) {
   invoiceItems[i] = new InvoiceItem();
}

你也许可以使用相同的for循环来填充数组中每个InvoiceItem的属性:

for (int i = 0; i < invoiceItems.length; i++) {
   invoiceItems[i] = new InvoiceItem();
   invoiceItems[i].setItemType(???);
   invoiceItems[i].setArticleNo(???);
   invoiceItems[i].setDescription(???);
   invoiceItems[i].setQty(???);
   invoiceItems[i].setPrice(???);
   invoiceItems[i].setVat(???);
}

但是未解决的问题是,...你在哪里获得数组中每个InvoiceItem的每个属性的数据?这些信息是否包含在文件中?是由用户输入的吗?这是你还需要告诉我们的事情。