【问题标题】:Why is my code not displaying these 2 Arraylists?为什么我的代码没有显示这 2 个 Arraylist?
【发布时间】:2016-03-20 09:12:33
【问题描述】:

我需要显示一个 ArrayList,其中包含个人可能拥有的大学学位列表。

在另一个 ArrayList 中,我需要显示满足公司要求的大学学位要求的个人列表。

在循环中尝试了一个 system.out,它甚至没有访问 for 循环。

*带有for循环的2个方法在这个类的末尾

import java.util.ArrayList;

public class RecruitingCompany {


private String companyName;
private int phoneNumber;
private String address;
private ArrayList<CollegeDegree> collegeDegreeList = new ArrayList<>();
private ArrayList<Candidate> candidateList = new ArrayList<>();

private Candidate candidate;
private Requirement academicDegree;

public RecruitingCompany(){
    /*main constructor*/
}


public RecruitingCompany(String companyName, int phoneNumber, String address){
    this.companyName = companyName;
    this.phoneNumber = phoneNumber;
    this.address = address;
}

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

public int getPhoneNumber() {
    return phoneNumber;
}

public void setPhoneNumber(int phoneNumber) {
    this.phoneNumber = phoneNumber;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public ArrayList<CollegeDegree> getCollegeDegreeList() {
    return collegeDegreeList;
}

public void setCollegeDegreeList(ArrayList<CollegeDegree> collegeDegreeList) {
    this.collegeDegreeList = collegeDegreeList;
}

public ArrayList<Candidate> getCandidateList() {
    return candidateList;
}

public void setCandidateList(ArrayList<Candidate> candidateList) {
    this.candidateList = candidateList;
}

public Candidate getCandidate() {
    return candidate;
}

public void setCandidate(Candidate candidate) {
    this.candidate = candidate;
}

public Requirement getAcademicDegree() {
    return academicDegree;
}

public void setAcademicDegree(Requirement academicDegree) {
    this.academicDegree = academicDegree;
}

public String showCandidateCollegeDegrees(){
    String degree = "Candidato: " + candidate.getName() + "\n";

    for (CollegeDegree cd: this.collegeDegreeList){
        degree += cd.toString();
    }
    return degree;
}

public String selectByCollegeDegree(){
    String person = "Título: " + academicDegree.getDegree() + "\n";

    for (Candidate c: this.candidateList){
            person += c.toString();
    }
    return person;
}

}

Tester 类

public class Tester {

public static void main(String[] args) {

    AvailableJob availableJob = new AvailableJob(2005, 2011, "Contador", 444464444, "Metalco", "del poste de luz, 50m oeste", 550.000);
    Candidate candidate = new Candidate("Asdrubal", 888888888, "Asdrubal@yahoo.com", "Bachillerato"); 
    CollegeDegree collegeDegree = new CollegeDegree("Bachillerato Administracion", 2003, "Universidad Aguila Calva");
    RecruitingCompany recruitingCo = new RecruitingCompany();
    Requirement requirement = new Requirement("Bachillerato", 4);

    recruitingCo.setCandidate(candidate); 
    recruitingCo.setAcademicDegree(requirement); 
    availableJob.setRequirement(requirement);

    System.out.println(recruitingCo.showCandidateCollegeDegrees());
    System.out.println();
    System.out.println(recruitingCo.selectByCollegeDegree());
    System.out.println();
    System.out.println(availableJob.showRequirement());

    //System.out.print(recruitingCo.getCandidateList());
}

}

【问题讨论】:

  • 你永远不会向那些ArrayLists 添加任何东西。
  • 怎么样?我正在将它们添加到测试器中。
  • 您正在设置字段candidateacademicDegree,但这些不会修改Lists。如果您愿意,您需要在列表中调用 add 方法(例如,在您的 setCandidate 方法中)。
  • 好的,现在我明白为什么了。谢谢。

标签: java oop arraylist


【解决方案1】:

您没有将新的候选人或学位添加到数组列表中。改一下下面的方法就行了,

public void setAcademicDegree(Requirement academicDegree) {
    this.academicDegree = academicDegree;
    collegeDegreeList.add(academicDegree);
}

public void setCandidate(Candidate candidate) {
    this.candidate = candidate;
    candidateList.add(candidate);
}

现在,当您设置新的 Candidate 对象或 CollegeDegree 对象时,它将自动添加到列表中。

【讨论】:

  • 是的,这行得通。正如resueman 在另一篇文章中所说,我没有在列表中添加任何内容。我进行了一些其他更改以使一切正常,但这篇文章让我走上了正轨。谢谢
  • 没问题,感谢您的认可... :)
【解决方案2】:

在您的代码中,您需要做一些更改:

  1. setCollegeDegreeList()setCandidateList()setCandidate() 方法 应更改为addCollegDegree()addCandidate()
  2. recruitingCo.setCandidate(candidate) 应替换为 recruitingCo.addCandidate(candidate);
  3. 需要在main()中添加recruitingCo.addCollegeDegree(collegeDegree);

你可以得到以下代码:

import java.util.ArrayList;

public class RecruitingCompany {


private String companyName;
private int phoneNumber;
private String address;
private ArrayList<CollegeDegree> collegeDegreeList = new ArrayList<>();
private ArrayList<Candidate> candidateList = new ArrayList<>();   
private Requirement academicDegree;

public RecruitingCompany(){
    /*main constructor*/
}


public RecruitingCompany(String companyName, int phoneNumber, String address){
    this.companyName = companyName;
    this.phoneNumber = phoneNumber;
    this.address = address;
}

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

public int getPhoneNumber() {
    return phoneNumber;
}

public void setPhoneNumber(int phoneNumber) {
    this.phoneNumber = phoneNumber;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public ArrayList<CollegeDegree> getCollegeDegreeList() {
    return collegeDegreeList;
}

public ArrayList<Candidate> getCandidateList() {
    return candidateList;
}

public void addCollegeDegree(CollegeDegree collegeDegree) {
    this.collegeDegreeList.add(collegeDegree);
}

public void addCandidate(Candidate candidate) {
    this.candidateList.add(candidate);
}

public Requirement getAcademicDegree() {
    return academicDegree;
}

public void setAcademicDegree(Requirement academicDegree) {
    this.academicDegree = academicDegree;
}

public String showCandidateCollegeDegrees(){
    String degree = "Candidato: " + candidate.getName() + "\n";

    for (CollegeDegree cd: this.collegeDegreeList){
        degree += cd.toString();
    }
    return degree;
}

public String selectByCollegeDegree(){
    String person = "Título: " + academicDegree.getDegree() + "\n";

    for (Candidate c: this.candidateList){
            person += c.toString();
    }
    return person;
}

}

测试人员:

public class Tester {

public static void main(String[] args) {

    AvailableJob availableJob = new AvailableJob(2005, 2011, "Contador", 444464444, "Metalco", "del poste de luz, 50m oeste", 550.000);
    Candidate candidate = new Candidate("Asdrubal", 888888888, "Asdrubal@yahoo.com", "Bachillerato"); 
    CollegeDegree collegeDegree = new CollegeDegree("Bachillerato Administracion", 2003, "Universidad Aguila Calva");
    RecruitingCompany recruitingCo = new RecruitingCompany();
    Requirement requirement = new Requirement("Bachillerato", 4);

    recruitingCo.addCandidate(candidate); 
    recruitingCo.addСollegeDegree(collegeDegree); 

    recruitingCo.setAcademicDegree(requirement); 
    availableJob.setRequirement(requirement);

    System.out.println(recruitingCo.showCandidateCollegeDegrees());
    System.out.println();
    System.out.println(recruitingCo.selectByCollegeDegree());
    System.out.println();
    System.out.println(availableJob.showRequirement());

    //System.out.print(recruitingCo.getCandidateList());
}

}

【讨论】:

  • 代码转储答案没有用,因为不清楚您实际更改了什么。请描述变化是什么。此外,复制您未更改的代码很少有用 - 如果它不是问题的一部分,请不要将其作为答案的一部分。
  • 他在 tester 类中添加了 2 行代码。
猜你喜欢
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
相关资源
最近更新 更多