在程序中使用arraylists需要帮助?

时间:2014-12-07 23:03:42

标签: java

似乎有20个团在不断形成的过程中。第一个有1000个人,第二个有900个,第三个有900个,依此类推到第二十个团,只有50个驻守。每个星期,每个团都增加了100个人,而在周末,最大的团是被送到前线。这持续了20个星期。

对于这个程序,我已经设法打印出每个团的原始人数。但是我很难在每个团中增加100名士兵。增兵必须是军队中的一种方法。我使用.txt文件获取了regiment对象。所有这些文件都包含编号为1-20的团的名称。

public class Regiment {

    private String name;       //name of regiment 
    private int regNumber;     //regiment number
    private int men;           // regiment men 

    /**
     * Creates a Regiment object.
     *
     * @param regNumber the regiment number
     * @param name the name of the regiment
     * @param men the number of men in a regiment
     */
    public Regiment(int regNumber, String name, int men) {
        this.name = name;
        this.regNumber = regNumber;
        this.men = men;
    }

    /**
     * Returns the name of the regiment.
     *
     * @return the regiment name
     */
    public String getName() {
        return name;
    }

    /**
     * Returns the number of the regiment.
     *
     * @return regiment number
     */
    public int getregNumber() {

        return regNumber;
    }

    /**
     * Returns the number of men in a regiment.
     *
     * @return men in regiment
     */
    public int getMen() {
        return men;
    }

    /**
     * Computes the number of men in a regiment
     */
    public int addMen2(int RegNumber) {

        int men = 1050 - (regNumber * 50);
        return men;

    }

}

class ArmyDataList {

    public ArrayList<Regiment> list;     // list of regiment objects

    /**
     * Creates an empty list
     */
    public ArmyDataList() {
        list = new ArrayList<Regiment>();
    }

    /**
     * Appends a regiment object to the list.
     *
     * @param current the object to be appended to the list
     */
    public void AddToList(Regiment current) {
        list.add(current);
    }

    /**
     * Removes a regiment object to the list.
     *
     * @param current the object to be removed from the list
     */
    public void RemoveFromList(Regiment current) {
        list.remove(current);
    }

    /**
     * Gets the largest regiment based on men.
     */
    public Regiment getLargest() {
        if (list.isEmpty()) {
            return null;
        }
        Regiment Reg1 = list.get(0);

        for (int i = 1; i < list.size(); i++) {
            Regiment current = list.get(i);      // get next regiment
            // is current regiment > largest
            if (current.getMen() > Reg1.getMen()) {
                Reg1 = current;
            }
        }
        return Reg1;

    }

    /**
     * Adds men to each regiment.
     */
    public void addMen() {

    }

    /**
     * Converts the list to a multi-line string, with each line containing the
     * data for one regiment.
     *
     * @return the String containing all the data on the list
     */
    public String toString() {

        String out
                = String.format("%28s%12s%n", "Regiments", " Men")
                + String.format("%12s%n", "Number")
                + String.format("%12s%16s%14s%n", "=======", "===============",
                        "=========");

        for (int i = 0; i < list.size(); i++) {

            Regiment regim = list.get(i);
            int regNumber = regim.getregNumber();
            String name = regim.getName();
            int men = regim.addMen2(regNumber);

            out = out + String.format("%12s", regNumber)
                    + String.format("%16s", name)
                    + String.format("%10s", men)
                    + "\n";
        }
        return out + "\n";

    }
}


 public class RegimentTest {

   public static void main(String[] args) throws IOException
   {


  ArmyDataList army = new ArmyDataList();

      // create Scanner object to read each line of file until eof
      Scanner fileScan = new Scanner(new File("regiments.txt"));

      System.out.println("Report Summary:\n");

      while (fileScan.hasNext()) // while not eof...
      {

         // read next line
         String line = fileScan.nextLine();

         // "echo print" data entered
         System.out.println(line);

         // 1. create a Scanner object
         Scanner in = new Scanner(line) ;

         // 2. extract tokens from current line
        int regNumber = in.nextInt();
        String name = in.next();
        int men = 0 ; //men is set to 0 only because I havent add the men yet


         // 3. create Regiment object passing the tokens to the constructor
        Regiment adder = new Regiment(regNumber, name, men );

         // 4. add object to list
         army.AddToList(adder) ;

      }


         System.out.println(army.toString());

      }

1 个答案:

答案 0 :(得分:0)

你可以在军团类中编写addNewMen()方法,你可以增加100个男人,因为男人是军团的财产。