如何从带有arraylist的类调用方法到另一个类?

时间:2013-12-09 02:49:08

标签: java methods arraylist bluej

我在Java的第一个学期,我需要帮助调用从下面的VotingMachine类到Candidate类的方法。投票机类正在正确编译。谢谢大家提供的任何帮助.... 梅赛德斯

import java.util.ArrayList;

/**
 * These are the fields for the Voting Machine Class.
 */
public class VotingMachine
{
    private ArrayList<String> candidateList;

    /**
     * The following constructor will establish the Candidate List
     */
    public VotingMachine()
    {
        candidateList = new ArrayList<String>();
    }

    /**
     * This constructor will store the Candidates for the Candidate List   
     */
    public void setCandidateList()
    {
        candidateList.add("Darnell Woffard");
        candidateList.add("Barack Obama");
        candidateList.add("Hillary Clinton");
    }    

    /**
     * This method will display the entire Candidate List.
     */
    public void printCandidateInfo()
    {
        for (int index=0; index < candidateList.size(); index++)
        {
            System.out.println(candidateList.get(index));
        }
    }

    /**
     * Method to the number of Candidates in the CandidateList Arraylist.
     */
    public int getNumberofFiles()
    {
        return candidateList.size();       
    }

   /**
    * Method to select one candidate by first providing an index number.
    */
   public void listFile(int index)
   {
       if(index >= 0 && index < candidateList.size()){
           String filename = candidateList.get(index);
           System.out.println(filename);
       }
   }

    /**
     * This method will enable a user to remove a candidate.
     */
    public void removeFile(int index)
    {
        if(index >= 0 && index < candidateList.size()){
            candidateList.remove(index);
        }
    }

    /**
     * This method will add a file to the Candidate List.
     * 
     */
    public void addCandidate(String filename)
    {
       candidateList.add(filename);
    }


//----------
//The Candidate Class:

public class Candidate{

    private String name;
    private char party;
    private String candidateList;
// Add fields
    /**
     * Fields
     * name - Candidate's name, stored in a String
     * party - Candidate's political party, stored in a char
     * as 'r' for Republican, 'd' for Democrat, and 'i' for Independent
     */

    /**
     * Constructor
     * 
     * @param anyName - caller inputs Candidate name
     * @param anyParty - caller inputs Candidate's party affiliation
     * stored as a char
     * chars are assigned with single quotes.
     */
    public Candidate(String anyName, char anyParty)
    {
        name = anyName;
        party = anyParty;   
    }

    /**
     * The method will enable method calls from the Voting Machine Class.
     */
    public void main(String candidateList)
    {
        VotingMachine votingMachine = new VotingMachine();
    }

            /**
             * This method will define the candidates party affiliation.
             * public char setParty()
             */


//Complete the three methods and their comments.    
    /**
     * Method to retrieve the Candidate's name for the caller.
     * public String getName(String anyName)
     * 
     */



    /**
     * Method to retrieve the Candidate's party for the caller.
     * 
     * @return
     */



    /**
     * Method to change the Candidate's party
     * 
     * @param 
     */

1 个答案:

答案 0 :(得分:1)

实际上我从中获得的是你正在尝试制作投票机。 VotingMachine是这里的主要类,有不同的候选人的信息。所以我们将在投票机上制作候选人的对象。注意:当我们应该创建一个java项目时,弄清楚它是什么主类和子类意味着哪个取决于哪个。在上面的例子中,类中有关联。首先声明一个ArrayList,用于存储候选类的对象。如下所示。

private ArrayList<candidate> candidateList;

/**
 * The following constructor will establish the Candidate List
 */
public VotingMachine()
{
    candidateList = new ArrayList<String>();
}

现在在ArrayList中添加新的候选者我修改了你的方法 setCandidate()

public void addNewCandidate(String name, char partySymbol)
{
    candidate candid = new candidate(name, partySymbol);// this will call the candidate constructor
    candidateList.add(candid);//add that object in ArrayList


}    

当ArrayList存储对象的引用时,内置函数int get(int index)将返回对象的引用。要打印该对象的信息或者您可以说值,我们应该将函数定义为getName()getParty()。您应该使用以下方法拨打System.out.println(candidateList.get(index));System.out.println(candidateList.get(index).getName());,而不是System.out.println(candidateList.get(index).getParty());

public void printCandidateInfo()
{
    for (int index=0; index < candidateList.size(); index++)
    {
        System.out.println(candidateList.get(index));
    }
}

所以将候选类中的函数定义为

public String getName()
{
    return name;

}

/**
 * Method to retrieve the Candidate's party for the caller.
 * 
 * @return
 */
public char getParty()
{
    return party;

}

以下方法将打印参考而不是候选信息,因此如上所述进行修改

public void listFile(int index)
{
      if(index >= 0 && index < candidateList.size()){
       String filename = candidateList.get(index);
       System.out.println(filename);
   }

}

因为我修改了它,

import java.util.ArrayList;

/**
* These are the fields for the Voting Machine Class.
*/

public class VotingMachine
{
private ArrayList<Candidate> candidateList;

/**
 * The following constructor will establish the Candidate List
 */
public VotingMachine()
{
    candidateList = new ArrayList<>();
}

/**
 * This method will store the Candidates for the Candidate List   
 */
public void addNewCandidate(String name, char partySymbol)
{
    Candidate candid = new Candidate(name, partySymbol);// this will call the candidate constructor
    candidateList.add(candid);//add that object in ArrayList
}    

/**
 * This method will display the entire Candidate List.
 */
public void printCandidateInfo()
{
    for (int index=0; index < candidateList.size(); index++)
    {
        System.out.print(candidateList.get(index).getName());
        System.out.println("  " + candidateList.get(index).getParty());
    }
}

/**
 * Method to the number of Candidates in the CandidateList Arraylist.
 */
public int getNumberofFiles()
{
    return candidateList.size();       
}

/**
* Method to select one candidate by first providing an index number.
*/
public void listFile(int index)
{
   System.out.print(candidateList.get(index).getName());
   System.out.println("  " + candidateList.get(index).getParty());
}

/**
 * This method will enable a user to remove a candidate.
 */
public void removeFile(int index)
{
    if(index >= 0 && index < candidateList.size()){
        candidateList.remove(index);
    }
}

}

在候选课程中,我刚刚添加了上述getName()getParty()方法..

问候