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

#java

Вопрос:

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

Класс лечения

 public class treatment {
    
    String treatment_type;
    String treatment_procedure;
    // aggregated
    booking booking;
    
    
    
    treatment( String treatment_type, String treatment_procedure, booking bookings ){
        
        this.treatment_type = treatment_type;
        this.treatment_procedure = treatment_procedure;
        this.booking = bookings;
        
        
    }
}
 

Класс бронирований

 public class booking {
    
    String patientname;
    String doctorname;
    String date;
    String time;
    
    public booking (String p, String d, String da, String t) {
        
        this.patientname = p;
        this.doctorname = d;
        this.date = da;
        this.time = t;
        
    }
}
 

Класс водителя

  public static void treatments(){
                                Scanner sc = new Scanner(System.in);
                System.out.println("Please provide treatment information");
                System.out.println("Enter the Patient's name :");
                String pname = sc.next();
                System.out.println("Enter the doctors name :");
                String dname = sc.next();
                System.out.println("Enter the date of the appointment :");
                String date = sc.next();
                System.out.println("Enter your time of appointment :");
                String time = sc.next();
                System.out.println("Enter the type of treatment :");
                String treattype = sc.next();
                System.out.println("Enter the specifics of the procedure :");
                String specifics = sc.next();
                                
                treatment newtreatment = new treatment(pname,dname,date, time, treattype, specifics);
                treatmentlist.add(newtreatment);
                System.out.println("The dentist has been registered Successfully");
                                           
                        }
 

Линия, выделенная красным, — это

 treatment newtreatment = new treatment(pname,dname,date, time, treattype, specifics);
 

В сообщении об ошибке указано следующее
требуется: Строка,Строка,
строка найдена: Строка,Строка,Строка,Строка,Строка,Строка, Строка
причина: фактические и формальные списки аргументов отличаются по длине

Я знаю, что длина неправильная, поэтому, чтобы проверить ее, я уменьшил ее до 3 значений, чтобы увидеть, не возникнет ли ошибка, но одно все равно было подчеркнуто, говоря о следующих несовместимых типах: Строка не может быть преобразована в строку

У кого-нибудь есть какие-нибудь идеи? Спасибо

Ответ №1:

Конструктор treatment класса принимает два String аргумента и booking аргумент.

 treatment( String treatment_type, String treatment_procedure, booking bookings ){
 

Когда вы используете его, вы вызываете его с шестью String аргументами.

 new treatment(pname,dname,date, time, treattype, specifics);
 

Теперь конструктор вашего booking класса принимает четыре String аргумента, поэтому я подозреваю, что вы намеревались использовать четыре String аргумента для создания booking объекта, который вы передадите в качестве аргумента treatment конструктору.

Что-то вроде:

 new treatment(treattype, specifics, new booking(pname, dname, date, time));

 

Комментарии:

1. Да, это решило мою проблему, теперь все работает нормально. Спасибо вам за вашу помощь.