繁体   English   中英

如何将文本文件中的值读取到Java中的哈希图中?

[英]How to read values from a text file into hashmap in Java?

我创建了类Patient (pojo),在其中声明了变量。

我添加了getter和setter方法,以及构造函数:

 public class Patient {
    private String patientName;
    private String phoneNumber;
    private  int age;

    //generate getter and setter method
    public String getPatientName() {
        return patientName;
    }
    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }
    public String getPhoneNumber() {
        return phoneNumber;
    }
    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    //generate constructor
    public Patient(String patientName, String phoneNumber, int age) {
        this.patientName = patientName;
        this.phoneNumber = phoneNumber;
        this.age = age;
    }
}

我已经创建了PatientDetails接口,并在Hospital类中实现了方法。

public interface PatientDetails {
    public void addpatient();
    public void refreshPatient()throws IOException; 
}

这是方法的实现方式:

    public class Hospital implements PatientDetails {`
Scanner scan = new Scanner(System.in);
    int token = 0;
    String name, mobileNumber;
    static HashMap<Integer, Patient> map = new HashMap<Integer, Patient>();
    File file = new File("E:\\Patient\\pt.txt");
    int age;

    public void addpatient() {

        BufferedWriter bufferedWriter = null;
        FileWriter fileWriter = null;
        try {
            // true = append file
            // write a data in a file
            fileWriter = new FileWriter(file, true);
            bufferedWriter = new BufferedWriter(fileWriter);

            System.out.println("Enter the name");
            scan.nextLine();
            name = scan.nextLine();

            System.out.println("Enter Mobile number must be 10 digit");
            mobileNumber = scan.nextLine();

            System.out.println("Enter the age");
            age = scan.nextInt();


            bufferedWriter.write("TokenNumber:" + token + "," + "PatientName:" + name + ",PhoneNumber:" + mobileNumber
                    + ",Age :" + age + ";");
            // for nextline
            bufferedWriter.newLine();
            // close file
            bufferedWriter.close();
            fileWriter.close();
            System.out.println("yours Appoint cofirmed....\nPatient Name: " + name + "\nMobile number: " + mobileNumber
                    + "\nToken number is: " + token + "\nAge is:" + age);
            token++;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println("Something went wrong");
            e.printStackTrace();
        }
    }

    @Override
    public void refreshPatient() throws IOException {
        Patient patient=new Patient(mobileNumber, mobileNumber, age);
        String filePath = file.getPath();
        System.out.println("refreshed successfully");

        String line;
        BufferedReader reader = new BufferedReader(new FileReader(filePath));
        map=new HashMap<>();
        while ((line = reader.readLine()) != null) {
            String[] parts = line.split(":", 2);
            if (parts.length >= 2) {
                String key = parts[0];
                String value = parts[1];
                //map.put(Integer.parseInt(key), value);

            } else {
                System.out.println("ignoring line: " + line);
            }
        }

            System.out.println(map);
        reader.close();
    }`)

我已将患者姓名,年龄和手机号码添加到patient.txt文件中。

当我调用refresh方法时,所有值都应到达地图,但我没有将Patient类的值输入地图。

如何解决?

你应该分裂,:

暂无
暂无

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

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