![](/img/trans.png)
[英]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.