2014-12-07 35 views
-2

看来20个团正在形成一个连续的过程。第一个有1000人,第二个有950个,第三个有900个,等到第二十个团只有50个。在每个星期里,每个团增加了100个人,而在本周结束时,最大的团是被送到前线。这持续了20周。在程序中使用数组列表需要帮助吗?

对于这个程序,我已经设法打印出每个团的原始人数。但是,我很难在每个团里增加100个人。增加的人必须是军队级的一种方法。我正在使用.txt文件获取团体对象。所有这些文件包含的编号为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()); 

     } 
+0

问题是什么?你有什么麻烦?你得到什么错误?你有没有阅读关于如何提出一个好问题的帮助部分?或者你只是想让别人为你做作业? – 2014-12-07 23:05:26

+0

@MattCoubrough是的,我想什么都不做,但不是很多:D – nbro 2014-12-07 23:06:40

+0

不,我没有得到任何错误我提到唯一的问题是我不知道如何给每个团队加人。我只想帮助理解我应该做什么。 – Name 2014-12-07 23:07:02

回答

0

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

+0

谢谢,陆军班上有没有办法做到这一点。 – Name 2014-12-07 23:45:33

+0

不,因为它有军团列表作为其变量。男子属于团。 – Avi 2014-12-07 23:47:38