【问题标题】:JAVA ArrayList Class call to another ClassJAVA ArrayList 类调用另一个类
【发布时间】:2016-03-06 21:28:59
【问题描述】:

我是这方面的初学者,所以请原谅我的简单问题。

我有一个日记程序,有 2 个课程,日记和工作。

日记是主要课程,我需要从中调用 Job 来完成工作。

以下是这两个类的代码。作业类本身工作正常,是类日记我有问题调用作业类来完成工作并返回。

Class Job 添加 3 个字段。

如何从 Diary 调用 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);
}

任何想法。

【问题讨论】:

  • 你创建了一个 Job 的实例吗?如果你想调用它的方法,你必须有它的一个实例?
  • Job job = new Job(name, day, priority);,然后你可以将它添加到ArrayList中。
  • 您需要编排对象的代码。对创建作业进行编码并将它们添加到列表中 - 顺便说一句。数组列表的 var name onejob 令人困惑。
  • 谢谢,我按照你说的做了,但是 Job 类仍然没有被激活,我看不到它的输入框,而如果我单独运行 Job 类,我可以看到它们。
  • 旁注:您在 Diary::Diary() 中定义了一个新变量,而不是分配现有的实例变量

标签: java arraylist call


【解决方案1】:

您正在创建两个作业列表 - 一个用于整个对象,一个仅在构造函数中。另外,让我们重命名您的列表:

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());
    }
}

【讨论】:

  • 谢谢 Jason,我会试试你的解决方案。
  • 您好,我尝试打印 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);
  • 您已经编写了一个方法来获取作业的字符串描述。它被称为 getJob()。我用它来打印详细信息(请参阅我答案的最后一个代码部分)。
【解决方案2】:
ArrayList<Job> jobs= new ArrayList<Job>() 

没有做任何事情,而且 onejob 的名称令人困惑。我推荐工作。

创建作业,然后将其添加到您已经创建的数组列表作业中。

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

【讨论】:

  • 感谢 danny,这很有帮助,它现在可以工作了,我正在尝试打印整个数组内容,看看我能不能做到。
  • 嗨,丹尼,再次需要帮助,能否请您查看有关打印 arrayList 的更新问题,如果可以,请提供帮助。谢谢。
  • 由于空间限制添加了一个新答案。
【解决方案3】:

首先你要记住的是 Arraylist 是一个对象,它的条目也是如此,所以你不能只是 toString 那些对象,除非它们有一个 toString 方法覆盖。

假设您从内部日记中调用 addJob,您实际上并没有对您传递的信息做任何事情。您需要创建一个作业并将其添加到您的数组列表中。

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

然后我将创建一个新方法来获取所有作业并列出它们,使用您已经在作业类中创建的 getJob 方法。

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

有意义吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2015-10-02
    • 2012-03-25
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多