Я использую HashMap для хранения строки, за которой следует объект Doctor, где строка — это копия кода в Doctor.
Сначала я подумал, что это просто проблема с проверкой состояния и выдачей исключения, но это не так.
Во-вторых, я распечатал всех добавленных врачей, но все предыдущие врачи были такими же, как и новые. >
public class Main {
public static void main(String[] args) {
DoctorController controler = new DoctorController();
try {
controler.addWorker();
controler.addWorker();
controler.displayAll();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Это та часть, где возникает проблема:
public class DoctorController {
private final DoctorInputer inputer;
private final DoctorManagement management;
public DoctorController() {
management = new DoctorManagement();
inputer = new DoctorInputer();
}
public void addWorker() throws Exception {
Doctor doctor = inputer.getDoctorDetails();
if (management.addDoctor(doctor)) {
System.out.println("Add successful");
} else {
System.out.println("Can not add doctor!");
}
}
public void displayAll() {
management.displayAll();
}
}
import java.util.HashMap;
public class DoctorManagement {
private final HashMap doctors;
public DoctorManagement() {
doctors = new HashMap();
}
public boolean addDoctor(Doctor d) throws Exception {
if (doctors.containsKey(d.getCode())) {
throw new Exception("Doctor code " + d.getCode() + " is duplicate");
}
if (d == null) {
throw new Exception("Data does not exist");
}
doctors.put(d.getCode(), d);
return true;
}
//Method: Displat All the doctor
}
Эти части — всего лишь ВВОД, но, возможно, они вам понадобятся
public class DoctorInputer {
private final Doctor doctor;
public DoctorInputer() {
doctor = new Doctor();
}
public Doctor getDoctorDetails() {
doctor.setCode(Validation.getString("Enter code: ",
"Code should follow format 'DOC_number'",
"^DOC\\d+$"));
doctor.setName(Validation.getString("Enter name: ",
"Invalid",
"[a-zA-Z]+"));
doctor.setSpecialization(Validation.getString("Enter specialization: ",
"Invalid",
"[a-zA-Z]+"));
doctor.setAvaiability(Validation.getInt("Enter avaiability: ",
"Avaiability >= 0",
"Invalid", 0, Integer.MAX_VALUE));
return doctor;
}
}
public class Doctor {
private String code;
private String name;
private String specialization;
private int avaiability;
// Getter and Setters
@Override
public String toString(){
return String.format("%-6s %-10s %-12s %-2d", code, name, specialization, avaiability);
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... e-whenever
Мой HashMap, содержащий новый Doctor, продолжает переопределять предыдущий всякий раз, когда я использую метод addDoctor ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение