[英]Placing an Object into and Object Array, which is inside another Object Array
[英]How can I access an object array located inside of another object which is then inside a superclass array?
我有一个抽象类Employee
,并在此基础上创建了以下子类:
FulltimeEmployee
PartTimeEmployee
Salesman
以及一个独立的类Orders
。
我使用Orders
类通过在Salesman构造函数中发送订单数组来“描述销售员”:
public Salesman(String firstname, String lastname,int code, String address,
String city,int tk,int phone,String email,int deptcode,int card,
double hours,String cat,int orderno,double salary,
Orders[] order){
super( firstname, lastname, code, address, city, tk, phone, email, deptcode,
card, hours, cat );
this.orderno=orderno;
setBaseSalary( salary );
getSalary(orders);
/////////////////
}
后来,我使用该数组来计算推销员所获得的奖金,具体取决于他的销售额。
在main
,我创建了一个Employee
类型的数组:
Employee employees[] = new Employee[ 7 ];
employees[ 0 ] = salary1;
employees[ 1 ] = salary2;
employees[ 2 ] = salary3;
employees[ 3 ] = partt1;
employees[ 4 ] = partt2;
employees[ 5 ] = sales1;
employees[ 6 ] = sales;
其中每一行都是不同类型的员工(工资=全职,partt =兼职,而sales =业务员)。
我的问题是我想使用employees数组打印每个销售员的订单。 到目前为止,我所做的是
for (int i=5;i<employees.length;i++){
System.out.printf("Orders of Salesman: %S %S",
employees[i].getName(),employees[i].getSurname());
System.out.printf(" Total amount(money) from orders: %,.0f ",
employees[i].earnings());
int j=0;
((Salesman)employees[i]).getOrderNo(arr) ;
//((Orders)employees[i]).getOrderNo();
System.out.printf("ordernumber: %d orderdate:%s description: %s
order amount(money): %,.0f\n ");
}
问题来了:
System.out.printf("ordernumber: %d orderdate:%s description: %s order amount(money): %,.0f\\n ");
如何访问employee数组上Salesman对象内部的order数组? 我已经尝试过强制转换,但由于Orders不是Employee的子类,因此无法正常工作。
例如,我需要它来打印,
推销员订单:约翰·库恩
订单总数:每个销售员13000个订单
订单号:1订单日期:10/2/2010说明:机械销售订单金额:12000
订单号:2订单日期:20/2/2010说明:零件销售订单金额:1000
您的Salesman
构造函数接受Order[]
订单,但它看起来好像没有在任何地方保留对其的引用(除非您在getSalary
或注释掉的部分中进行了引用)。
您将需要添加类似
this.orders = orders;
在Salesman
构造函数中,因此您可以将数组引用为Salesman
对象的字段/属性。
通常,您应该使用Bean
模式,其中每个字段都有一个getter / setter方法:
public Order[] getOrders(){
return orders;
}
public void setOrders(Order[] orders){
this.orders=orders;
}
然后在构造函数中添加setOrders(orders);
然后在您的调试/输出代码中添加:
Salesman salesman = (Salesman) employees[i];
for (Order order : salesman.getOrders())
System.out.println(order); // i don't know what fields order has!
如果您要说的是您有一个Employee
数组,并且每个Salesman
(仅)有一个成员来提供自己已售出的订单,那么您必须使用一个数组数组。
乍一看,您的Employee
数组更可能是一个向量,即一维数组。 另外,您的Salesman
类具有一个Order
数组,这似乎也是一个向量。 如果这是你实际得到的,你只需要通过你的迭代Salesman.Orders
成员,让您的销售Salesman
做到了。
由于它被标记为[homework]
,因此我拒绝编写代码,并为您准备全部内容。
此外,这里有一些提示:
您已经遍历了Employee
数组,因此您知道如何遍历一个Employee
。
您说一个Salesman
从Employee
类派生的,因此使Employee
可能是类型可铸型到Salesman
,然后您将获得Salesman
类的实例,该实际Employee
是Salesman
,否则应返回null;
现在,您可以通过属性方法(getter和setter方法)访问字段;
因此,如何使
Orders
可以从类外部访问,并将其公开为数组?如果您能够将其公开为数组,如何遍历数组以获取每个订单金额,以便可以计算出此
Salesman
实例的销售量?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.