2017-12-07 7 views
0

私はしなければならない課題があります。私は、クラス会社を作成し、従業員クラスのオブジェクトのための雇用、火災などのいくつかのメソッドを書く必要があります。 それらは私のクラスとメソッドです:JavaのArrayListで独自のメソッドを使う方法は?

public class Company{ 
    ArrayList <Employee> alist= new ArrayList<Employee>(); 

    public void hire(Employee e) { 
     int i=0; 
     boolean k=false; 
     while(i<alist.size()) { 
      if (e.getLastName().equals(alist.get(i).getLastName())) { 
       k=true; 
       i++; 
      } 
     } 
     if (k==false) alist.add(e); 
     else System.out.print("Employee already exists"); 
    } 
} 

public class Employee{ 
    protected String lastname; //protected for subclasses 
    protected double jobposition; 
    public Employee(String lastname,double jobposition) { 
     this.lastname=lastname; 
     this.jobposition=jobposition; 
    } 
    public String getLastName() { 
     return lastname; 
} 

と従業員を拡張してサブクラス:

public class OfficeWorker extends Employee { 
    float pay, bonus; 
    public OfficeWorker(String lastname,double jobposition,float pay,float bonus) { 
     super(lastname,jobposition); 
     this.pay=pay; 
     this.bonus=bonus; 
    } 
} 

「私はこれを行うためにArrayListを使用していたが、それはメインクラスでクラッシュし、私はメッセージを取得する方法"ArrayList"型のhire(Employee)は未定義です。 "

public static void main(String[]args) { 

    ArrayList <Employee> list = new ArrayList <Employee>(); 
    Employee e1 = new OfficeWorker("Smith",0.5,2000,50); 
    list.hire(e1); 

} 

どうしてこのようにすることはできませんか?

+4

あなたが書いた 'hire'メソッドは' Company'クラスにあります。なぜあなたは 'ArrayList <>'にあると思いますか?あなたはこれが何をすると思いますか? – David

+0

「会社」は採用を行うクラスです。従業員をリストに追加することを意味しますか?もしそうなら、それは 'list.add(e1)'で終わりです。あなたが本当に行っていることは、 'Employee e1'を採用した' Company'を作成し、 'Company'インスタンスで作成された' ArrayList'に追加することです。 – birryree

+1

'Company comp = new Company();のように' Company'のインスタンスを作成し、 'comp.hire(e1);'を使ってEmployeeを追加します。 CompanyクラスのEmployeesを格納しているリストがすでにあります。 – VPK

答えて

0

あなたの主な方法は次のようにする必要があります:あなたはすでにArrayList <Employee> alistEmployeeを追加し、クラスCompanyのメソッドhire()を書いてきたように

public static void main(String[]args) { 

    Company company = new Company(); 
    Employee e1 = new OfficeWorker("Smith",0.5,2000,50); 
    company.hire(e1); 
} 

Java ArrayListクラスで独自のメソッドを作成する方法はありません。

+0

私は見たことのない明白な間違いのようですが、今はありがとう、ありがとう! – Weronika

+0

@Weronika、それは当初の開発段階での明らかな誤りです。私の答えがあなたの問題を解決するのに役立ったら、それを受け入れることができます。ハッピーコーディング!!! – VPK

0

何が起こっていることは、それが作成されています一度Companyがすでに持っているとして、あなたが、会社にhireのメソッドを呼び出し、その後、Companyと呼ばれるオブジェクトを作成し、その代わりに、ArrayListオブジェクトに直接雇うメソッドを呼び出しているということですその中のArrayListの特性。

public static void main(String[]args) { 
    Company company = new Company(); 
    Employee e1 = new OfficeWorker("Smith",0.5,2000,50); 
    company.hire(e1); 
} 

希望すると助かります!

0

ArrayList list = new ArrayList(); ArrayListにはレンタル方法がありません。 クラス内では、そのメソッド内のavailabeメソッドにアクセスできます。また、アクセス修飾子とメソッドを採用している場所によって異なります。

は直接

SomeClass.m(); 
0

レンタル()メソッドは、あなたが呼び出すことができますが、静的なパブリックメソッドについては、そのオブジェクト

SomeClass c=new SomeClass(); 
c.m(); 

上のオブジェクトと呼び出しメソッドを作成する必要があります非静的パブリックメソッドにアクセスするには会社クラスの一部として定義されています。 以下のようになります。

Company xyz = new Company(); 
xyz.hire(e1); 
関連する問題