Требуемый тип и предоставленный параметр отличаются - PullRequest
0 голосов
/ 06 апреля 2020

В настоящее время я пишу код для скаутской системы. У меня есть несколько классов, и иерархия выглядит следующим образом: iScoutMember -> Scout (реализует iScoutMember) -> BeaverScout (расширяет Scout). У меня также есть класс ScoutList, который обрабатывает добавление разведчиков в ArrayList из разведчиков и ScoutSystem, который создает меню и использует методы из класса ScoutList.

Я получаю ошибку от метод addScout в классе ScoutSystem, когда я пытаюсь добавить информацию для ArrayList SpecialInterests

Это информация об ошибке

Ошибка: (108, 103) java: несовместимые типы: SpecialInterest нельзя преобразовать в java .util.ArrayList

Ошибка: (112, 103) java: несовместимые типы: SpecialInterest нельзя преобразовать в java .util.ArrayList

Это код класса Scout

import java.util.ArrayList;
public abstract class Scout implements iScoutMember {
private String name;
private String county;
private String dateOfBirth;
private String address;
private String phoneNumber;
private ArrayList<SpecialInterest> specialInterests;

public Scout(String name, String county, String dateOfBirth, String address, String phoneNumber, ArrayList<SpecialInterest> specialInterests) {
    this.name = name;
    this.county = county;
    this.dateOfBirth = dateOfBirth;
    this.address = address;
    this.phoneNumber = phoneNumber;
    this.specialInterests = specialInterests;
}

, а это код класса SpecialInterest

public class SpecialInterest {
private String interestCategory;
private String details;
private String dateBadgeReceived;

public SpecialInterest(String interestCategory, String details, String dateBadgeReceived) {
    this.interestCategory = interestCategory;
    this.details = details;
    this.dateBadgeReceived = dateBadgeReceived;
}

и, наконец, это код метода addScout в системном классе Scout private void addScout () {

    System.out.println("What kind of scout would you like to add?.");
    System.out.println("1. Beaver Scout");
    System.out.println("2. Cub Scout");
    System.out.println("3. Scouter");
    int option = input.nextInt();
    switch(option){
        case 1:
            System.out.println("Name => ");
            System.out.println("County=> ");
            System.out.println("Date of Birth => ");
            System.out.println("Address => ");
            System.out.println("Contact number => ");
            String name = input.nextLine();
            String county = input.nextLine();
            String dateOfBirth = input.nextLine();
            String address = input.nextLine();
            String phoneNumber = input.nextLine();
            System.out.println("Enter Special Interest Details");
            System.out.println("Special Interest Category");
            System.out.println("Details");
            System.out.println("date Badge Received");
            String interestCategory = input.nextLine();
            String details = input.nextLine();
            String dateBadgeReceived = input.nextLine();

            SpecialInterest sp1 = new SpecialInterest(interestCategory,details,dateBadgeReceived);

            System.out.println("Do you wish to enter another special Interest: Y/y for yes, N/n for no ==> ");
            String ans = input.nextLine();
            ans.toUpperCase();
            if (ans.equals("Y")){
                System.out.println("Parents Phone Number?");
                String parentPhone = input.nextLine();
                BeaverScout s1 = new BeaverScout(name, county, dateOfBirth, address, phoneNumber, sp1, parentPhone);
                scoutList.addScout(s1);
            } else if(ans.equals("N")){
                String parentPhone = "";
                BeaverScout s1 = new BeaverScout(name, county, dateOfBirth, address, phoneNumber, sp1, parentPhone);
                scoutList.addScout(s1);
            }


    }

}
}

Эта строка кода выдает мне ошибку

BeaverScout s1 = new BeaverScout(name, county, dateOfBirth, address, phoneNumber, sp1, parentPhone);

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

1 Ответ

1 голос
/ 06 апреля 2020

Ваш вопрос не очень понятен, но, насколько я могу судить, вы передаете один SpecialInterest объект (sp1) в методе addScout по адресу:

SpecialInterest sp1 = new SpecialInterest(interestCategory,details,dateBadgeReceived);
//stuff
BeaverScout s1 = new BeaverScout(name, county, dateOfBirth, address, phoneNumber, sp1, parentPhone);

Что вы, вероятно, должны сделать это ArrayList<SpecialInterest> и передать , что в, как это

ArrayList<SpecialInterest> sps = new ArrayList<>();
SpecialInterest sp1 = new SpecialInterest(interestCategory,details,dateBadgeReceived);
sps.add(sp1);
//stuff
BeaverScout s1 = new BeaverScout(name, county, dateOfBirth, address, phoneNumber, sps, parentPhone);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...