繁体   English   中英

如何从具有数组列表的类中调用方法到另一个类?

[英]How do I call methods from a class with an arraylist to another class?

我上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 
     */

实际上,我从中得到的是您正在尝试制造投票机。 投票机是这里的主要班级,拥有不同候选人的信息。 因此,我们将在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()方法。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM