Создание класса из текстового файла - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть текстовый файл с именами, номерами телефонов и идентификаторами сотрудников.

Пример:

Chris Cotton
5555555555
CCOTTON

Joshua Trammell
5555555555
JTRAMMELL

И у меня есть класс Employee с конструктором, который принимает имя, номер телефона и идентификатор.

Как я могу использовать этот текстовый файл для создания экземпляра класса сотрудников для каждой записи в моем текстовом файле, используя идентификатор сотрудника в качестве имени объекта?

package com.evolution.model;

public class Employee {
    private String name;
    private int phoneNumber;
    private String employeeId;

    public Employee(String name, int phoneNumber, String employeeId) {
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.employeeId = employeeId;
    }

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете читать файл построчно и поддерживать три последовательные строки в массиве, а в момент захвата трех строк вы можете создать объект employee, используя его конструктор, как я показал в моем методе main.

Вот пример кода, который вы можете использовать.На всякий случай я изменил тип данных для phoneNumber с int на String, потому что номер телефона может содержать или не содержать только цифры.Но если вы уверены, что ваши телефонные номера будут содержать только цифры, которые тоже не начинаются с нуля, вы можете написать Integer.parseInt(fileLines.get(i + 1)) вместо просто fileLines.get(i + 1) в цикле создания конструктора в цикле for.

Вот пример кода для того же самого,

public class Employee {
    private String name;
    private String phoneNumber;
    private String employeeId;

    public Employee(String name, String phoneNumber, String employeeId) {
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.employeeId = employeeId;
    }

    public String toString() {
        return String.format("name: %s, phoneNumber: %s, employeeId: %s",
                new Object[] { name, phoneNumber, employeeId });
    }

    public static void main(String args[]) throws Exception {
        try (BufferedReader reader = new BufferedReader(new FileReader("emp.txt"));) {
            String line = null;

            int counter = 0;
            String[] lineObject = new String[3];
            while ((line = reader.readLine()) != null) {
                line = line.trim();
                if (line.length() == 0) {
                    continue;
                }
                lineObject[counter++] = line;
                if (counter == 3) {
                    counter = 0;
                    Employee employee = new Employee(lineObject[0], lineObject[1], lineObject[2]);
                    System.out.println(employee);
                    // employee.dowhatever();
                }
            }
        }
    }
}

При выполнении эта программа печатает следующий вывод,

name: Chris Cotton, phoneNumber: 5555555555, employeeId: CCOTTON
name: Joshua Trammell, phoneNumber: 5555555555, employeeId: JTRAMMELL
...