#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. Да, это решило мою проблему, теперь все работает нормально. Спасибо вам за вашу помощь.