我需要用不同的数据类型填充数组
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等混合在一起也很重要吗?
答案 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的每个属性的数据?这些信息是否包含在文件中?是由用户输入的吗?这是你还需要告诉我们的事情。