Помощь с домашним заданием;Чтение из нескольких файлов в векторы / массивы - PullRequest
0 голосов
/ 16 октября 2011

Хорошо, мое задание - читать из двух отдельных файлов. Первый файл читается в «HallOfFameMember» и затем должен храниться в векторе.

Второй должен прочитать и затем сохранить в массиве HallOfFame

Объект HallOfFameMember имеет 10 полей. В порядке firstName, lastName, покойного, месяца рождения, дня рождения, года рождения, всего заработанного, года воспроизведения, года рождения, идентификатора зала славы

День рождения / месяц / год - все идут в отдельный класс для создания даты рождения Дата рождения затем устанавливается в HallOfFameMember. Поля для записи будут разделены различным количеством пробелов и / или табуляций (пробелов).

После прочтения записи из этого файла вызовите 10-аргументный конструктор HallOfFameMember, используя поля из записи в качестве аргументов в вызове конструктора. Добавьте этот новый объект HallOfFameMember в tempHallOfFameMemberVec.

Объект HallOfFame имеет 5 полей. В порядке hallOfFameId, города, costToVisit, numberOfVisitorsPerYear и name.

После прочтения записи из этого файла вызовите 5-аргументный конструктор класса HallOfFame, используя аргументы, полученные из строки в файле. Добавьте этот новый объект HallOfFame в tempHallOfFameArr.

Это все, что нужно сделать из командной строки.

Я знаю, что мой текущий код не будет работать, я просто пытался найти способ сделать это. Векторы совершенно новые для меня, наряду с BufferedReader, и я пытался использовать примеры на javapractice.com, а также несколько других сайтов для справки. Я знаю, что это будет что-то маленькое, что я пропускаю / пропускаю, и у меня будет небольшой момент, когда я это выясню.

Во всяком случае, мой текущий вопрос таков.

Как мне прочитать файл, в котором в качестве разделителя указано "любое количество пробелов / табуляций"? А затем проанализировать это в соответствующих полях в соответствующем классе?

Предоставление мне кода не поможет, если вы просто укажете мне на веб-сайт или ссылку, которую я смогу прочитать, чтобы у меня был хороший момент.

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Vector;

public class HW4 {

    /**
     * @param args
     */
    public static void main(String[] args) {

        FileReader inputFileA = new FileReader("");
        FileReader inputFileB = new FileReader("");


        BufferedReader inputB = new BufferedReader(inputFileB);

        Vector<HallOfFameMember> tempHallOfFameMemberVec = new Vector<HallOfFameMember>();


        try{
            BufferedReader inputA = new BufferedReader(inputFileA);
            try {
                String line = null;

                while ((line = inputA.readLine()) != null){

                }
            }

        }

        String newHallOfFameLine = inputB.toString();
        String delims = "[ \t]";
        HallOfFame[] tempHallOfFameArr = newHallOfFameLine.split(delims);

        for (int i = 0; i < args.length; i += 5) {
            tempHallOfFameArr[i/5].setHallOfFameId(Integer.parseInt(args[i]));
            tempHallOfFameArr[i/5].setCity(args[i+1]);
            tempHallOfFameArr[i/5].setCostToVisit(Integer.parseInt(args[i+2]));
            tempHallOfFameArr[i/5].setNumberOfVisitorsPerYear(Integer.parseInt(args[i+3]));
            tempHallOfFameArr[i/5].setName(args[i+4]);

        }




        }

class HallOfFameMember {

    private String firstName;
    private String lastName;
    private boolean deceased;
    private int dateOfBirth;
    private double totalEarned;
    private int yearsPlayed;
    private int yearInducted;
    private int HallOfFameId;

    public HallOfFameMember() {
    }

    public HallOfFameMember(String firstName, String lastName,
            boolean deceased, int day, int month, int year, double totalEarned,
            int yearsPlayed, int yearInducted, int hallOfFameId) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.deceased = deceased;
        this.dateOfBirth = month + day + year;
        this.totalEarned = totalEarned;
        this.yearsPlayed = yearsPlayed;
        this.yearInducted = yearInducted;
        HallOfFameId = hallOfFameId;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public boolean isDeceased() {
        return deceased;
    }

    public void setDeceased(boolean deceased) {
        this.deceased = deceased;
    }

    public int getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(int dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    public double getTotalEarned() {
        return totalEarned;
    }

    public void setTotalEarned(double totalEarned) {
        this.totalEarned = totalEarned;
    }

    public int getYearsPlayed() {
        return yearsPlayed;
    }

    public void setYearsPlayed(int yearsPlayed) {
        this.yearsPlayed = yearsPlayed;
    }

    public int getYearInducted() {
        return yearInducted;
    }

    public void setYearInducted(int yearInducted) {
        this.yearInducted = yearInducted;
    }

    public int getHallOfFameId() {
        return HallOfFameId;
    }

    public void setHallOfFameId(int hallOfFameId) {
        HallOfFameId = hallOfFameId;
    }

    public double averageYearlySalary(double averageYearlySalary) {
        return averageYearlySalary = (totalEarned / yearsPlayed);
    }
}

class Date {

    private int month;
    private int day;
    private int year;

    public Date(int month, int day, int year) {
        super();
        this.month = month;
        this.day = day;
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

}

class HallOfFame {
    private int hallOfFameId;// ID of the hall of fame
    private String name;// Name of the hall of fame
    private String city;// the city in which the hall of fame is located
    private double costToVisit;// cost in dollars for a visitor to a hall of
                                // fame for 1 day
    private int numberOfVisitorsPerYear;
    private static final double maxCostToVisit = 37.50;

    public HallOfFame() {

    }

    public HallOfFame(int hallOfFameId, String name, String city,
            double costToVisit, int numberOfVisitorsPerYear) {
        super();
        this.hallOfFameId = hallOfFameId;
        this.name = name;
        this.city = city;
        this.costToVisit = costToVisit;
        this.numberOfVisitorsPerYear = numberOfVisitorsPerYear;
    }

    public int getHallOfFameId() {
        return hallOfFameId;
    }

    public void setHallOfFameId(int hallOfFameId) {
        this.hallOfFameId = hallOfFameId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public double getCostToVisit() {
        if (costToVisit <= maxCostToVisit) {
            return costToVisit;
        } else
            return maxCostToVisit;
    }

    public void setCostToVisit(double costToVisit) {
        this.costToVisit = costToVisit;
    }

    public int getNumberOfVisitorsPerYear() {
        return numberOfVisitorsPerYear;
    }

    public void setNumberOfVisitorsPerYear(int numberOfVisitorsPerYear) {
        this.numberOfVisitorsPerYear = numberOfVisitorsPerYear;
    }

    public static double getMaxcosttovisit() {
        return maxCostToVisit;
    }

    public double totalAnnualRevenue(double totalAnnualRevenue) {
        totalAnnualRevenue += costToVisit * numberOfVisitorsPerYear;
        return totalAnnualRevenue;

    }

}


class ReportWriter{

    private Vector<HallOfFameMember> hallOfFameMemberVec;
    private HallOfFame[] hallOfFameArr;

    public ReportWriter() {

    }

    public Vector<HallOfFameMember> getHallOfFameMemberVec() {
        return hallOfFameMemberVec;
    }

    public void setHallOfFameMemberVec(Vector<HallOfFameMember> hallOfFameMemberVec) {
        this.hallOfFameMemberVec = hallOfFameMemberVec;
    }

    public HallOfFame[] getHallOfFameArr() {
        return hallOfFameArr;
    }

    public void setHallOfFameArr(HallOfFame[] hallOfFameArr) {
        this.hallOfFameArr = hallOfFameArr;
    }

    public void displayReports(){

    }


}

1 Ответ

1 голос
/ 16 октября 2011

Пара советов:

Я не хочу делать домашнее задание за вас, но я не могу придумать быстрое учебное пособие, которое укажет вам, что охватывает именно то, что вы делаете.

Вы находитесь на правильном пути с .split, но ваше выражение разделителя не будет работать для нескольких пробелов / табуляции.Попробуйте это:

String delims = "\\s+";

Это разбьет вашу строку на любую последовательную последовательность из одного или нескольких пробельных символов.

Кроме того, вам нужно переместить разделение в цикл while, кака также создание каждого объекта HallOfFameMember.В каждой итерации цикла вы хотите:

  1. Разделить строку, которую вы прочитали из файла, чтобы создать массив строк, представляющих значения для одной записи.
  2. Создать новуюHallOfFameMember, используя значения из вашего строкового массива.(tempHallOfFameArr [0] для имени, tempHallOfFameArr [1] для фамилии и т.более подробно о любом из этих шагов я с удовольствием уточню.
...