2016-03-06 79 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()); 
    } 
} 

有意义吗?