2016-03-06 114 views
-1

我是這個初學者,所以請原諒我這個簡單的問題。JAVA ArrayList類調用另一個類

我有一個日記計劃2類,日記和工作。

日記是主要的類,從它我需要打電話給工作做。

下面是這兩個類的代碼。 Class Job本身工作正常,我有問題打電話給Job Job做工作並返回。

班級作業添加3個字段。

如何從日記中調用Job並返回存儲在ArrayList中的結果。

import java.util.ArrayList; 

public class Diary { 
    ArrayList<Job> jobs; 
    String jobName, jobDay, jobPriority; 


    public Diary() { 
     jobs = new ArrayList<Job>(); 
    } 
} 

public class Job { 

    public Job(String jobName, String jobDay, String jobPriority) { 
     name = jobName; 
     day = jobDay; 
     priority = jobPriority; 
    } 

    /** 
    * return the varaibles 
    */ 
    public String getName() { 
     return name; 
    } 

    public String getDay() { 
     return day; 
    } 

    public String getPriority() { 
     return priority; 
    } 

    // print the job details 
    public String getJob() { 
     return name + " on a " + day + " this week and its priority is " + priority; 
    } 
} 

感謝幫助解決問題的人。

我的後續問題是,我試圖打印ArrayList的內容,但沒有成功。我使用了以下內容,但他們一直給我內存位置的地址而不是內容。我用這些東西,但似乎沒有任何工作。

public void addJob(String jobName, String jobDay, String jobPriority) 
{ 
System.out.println(Arrays.toString(jobs)); 
System.out.println(jobs.get(0)); 
System.out.println(jobs.toString().replaceAll("\[\]", ""));   
System.out.println(jobs.toString(jobs)); 
System.out.println(""+jobs.get(0).jobName); 
} 

任何想法。

+1

您是否創建了Job的實例?如果你想調用它的方法,你必須有一個實例嗎? –

+0

'Job job = new Job(name,day,priority);',那麼你可以將它添加到ArrayList中。 –

+0

你需要編寫你的對象的代碼。編寫創建作業並將它們添加到列表中 - 順便說一句。數組列表的var名稱onejob很混亂。 – Peter

回答

0

您正在創建兩個作業列表 - 一個用於整個對象,另一個僅用於構造函數。此外,我們重命名列表:

import java.util.ArrayList; 

public class Diary { 

    ArrayList<Job> jobs; 

    public Diary() { 
     jobs = new ArrayList<Job>(); 
    } 
} 

現在,某個地方,你需要一些工作添加到列表:

public Diary() { 
    jobs = new ArrayList<Job>(); 

    jobs.add(new Job("Do something", "Monday", "HIGH")); 
    jobs.add(new Job("Do something else", "Tuesday", "MED")); 
} 

然後,你可能要列出工作:

public class Diary { 

    ... 

    public void printJobs { 
     for(Job job : jobs) { 
      System.out.println(job.getJob()); 
    } 
} 
+0

謝謝Jason,我會試試你的解決方案。 – user3183600

+0

嗨,我試過打印ArrayList的內容但沒有成功。我使用了以下內容,但他們一直給我內存位置的地址而不是內容。我用這些東西,但似乎沒有任何工作。 //System.out.println(Arrays.toString(jobs)); System.out.println(jobs.get(0)); System.out.println(jobs.toString()。replaceAll(「\\ [\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'')); //System.out.println(jobs.toString(jobs)); //System.out.println("++jobs.get(0).jobName); – user3183600

+0

您已經編寫了一個獲取作業字符串描述的方法。它被稱爲getJob()。我用它來打印細節(請參閱我的答案的最後一個代碼部分)。 – Jason

0
ArrayList<Job> jobs= new ArrayList<Job>() 

沒有做任何事,名字onejob混淆。我推薦工作。

創建工作,然後將其添加到已經創建的數組列表工作中。

Job job = new Job(someName, someDay, somePriority); 
jobs.add(job); 
+0

感謝丹尼,這是有幫助的,它現在工作,我正在嘗試打印整個數組內容,看看我能否做到這一點。 – user3183600

+0

嗨Danny,再次需要幫助,你可以看看更新的關於打印arrayList的問題,如果可以的話可以幫忙。謝謝。 – user3183600

+0

由於空間限制添加了新答案。 – danny2327

0

那麼你必須記住的第一件事是,一個ArrayList是一個對象等都是它的條目,所以你不能僅僅的toString這些對象,除非他們有一個toString方法重寫。

假設你從日記裏面調用addJob,你實際上沒有對你傳遞的信息做任何事情。您需要創建一個作業並將其添加到您的數組列表中。

public void addJob(String jobName, String jobDay, String jobPriority) { 
    Job job = new Job(jobName, jobDay, jobPriority); 
    jobs.add(job); 
} 

然後,我會創建一個新的方法來獲取所有作業,並列出它們,使用您已經創建了作業類的insode的getJob方法。

public void listJobs(){ 
    for(job : jobs) { 
     System.out.println(job.getJob()); 
    } 
} 

有意義嗎?