我有一个抽象类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 =兼职,销售=销售员)。
我的问题是我想使用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 ");
如何访问employees数组上Salesman对象内的orders数组? 我尝试过转换,但它不起作用,因为Orders不是Employee的子类。
我需要它来打印,例如,
推销员订单:john koun
订单总数:13000 每个销售员的订单
订单号:1个订单日期:10/2/2010描述:机械销售订单金额:12000
订单号:2订单日期:20/2/2010描述:零件销售订单金额:1000
答案 0 :(得分:3)
您的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!
答案 1 :(得分:0)
如果你说的是你有一个Employee
数组,并且每个Salesman
(仅)有一个成员提供他自己已售出的订单,那么你必须使用数组数组。
在第一个视图中,您的Employee
数组更可能是一个向量,即一维数组。另外,您的Salesman
类有一个Order
数组,它似乎也是一个向量。如果这是您实际获得的,您只需要遍历Salesman.Orders
成员即可获得Salesman
所做的销售。
由于它被标记为[homework]
,我拒绝编写代码并为您提供所有烹饪。
此外,这里有一些提示:
您已遍历Employee
数组,因此您知道如何遍历一个;
你说Salesman
来自Employee
类,因此Employee
也许可以输入Salesman
类型,然后你就会得到你的实例Salesman
类的实际值Employee
是Salesman
,否则应返回null;
现在,您可以通过属性方法(getter和setter方法)访问字段;
那么,你如何才能从类的外部访问
Orders
,并将其作为数组公开?如果您能够将其作为数组公开,那么如何遍历数组以获取每个订单数量,以便计算此
Salesman
实例的销售量?