Реализация MVC - PullRequest
       1

Реализация MVC

0 голосов
/ 06 октября 2018

Я работаю над реализацией кода с использованием MVC для моего класса, но у меня возникла ошибка, которую я не могу понять.Единственные части задания, которые я должен изменить, это Model, View и Controller, поэтому остальные классы для нас уже были завершены.

Когда я запускаю код, в контроллере появляется ошибка:

"ошибка: несовместимые типы: ученик не может быть преобразован в строковое представление. DisplayOnButton (model.getInfoForStudent (0), 0);"

Как это исправить?

Вот что у меня есть:

Контроллер -

public class Controller
    {
    Model model;
    View view;

    public Controller(Model model, View view)
    {
        this.model = model;
        this.view = view;
        SetViewFromModel();
    }

    public void SetViewFromModel()
    {
        view.DisplayOnButton(model.getInfoForStudent(0), 0);
        view.DisplayOnButton(model.getInfoForStudent(1), 1);
        view.DisplayOnButton(model.getInfoForStudent(2), 2);
    }
    }

Модель -

    public class Model
    {
    ArrayList<Student> sts = new ArrayList<>();

    public Model()
    {
        //creates 3 students
        MailAddress addr1 = new MailAddress("107 W College Avenue", "State College", "PA", 16801);
        Student st1 = new Student("Emily", "Smith", 20, addr1);
        MailAddress addr2 = new MailAddress("200 W College Avenue", "State College", "PA", 16801);
        Student st2 = new Student("Mary", "Doe", 20, addr2);
        MailAddress addr3 = new MailAddress("300 W College Avenue", "State College", "PA", 16801);
        Student st3 = new Student("John", "Doe", 20, addr3);
        //add them to the array of students
        sts.add(st1);
        sts.add(st2);
        sts.add(st3);        
    }

    public Student getInfoForStudent (int studentIndex)
        {
            return sts.get(studentIndex);
        }  
}

Вид -

public void DisplayOnButton(String infoToDisplay, int onButton)
    {
        mf.getIp().DisplayOnButton(infoToDisplay, onButton);
    }

1 Ответ

0 голосов
/ 06 октября 2018

ваш метод DisplayOnButton ожидает строку, и вы передаете студента, вам придется конвертировать getInfoForStudent, чтобы вернуть строку или преобразовать студента в строку.

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

, например:

public class Student {
private final String name;
private final String surname;
private final int age;
private final MailAddress mailAddress;

public Student(String name, String surname, int age, MailAddress mailAddress) {
    this.name = name;
    this.surname = surname;
    this.age = age;
    this.mailAddress=mailAddress;
}

 @Override
public String toString() {

    return String.format("name: %s surname:%s age:%d mail address:%s", name, surname, age, mailAddress);
}
}

, вам нужно будет сделать нечто подобное для mailAddress, так что тогдаваш getInfoForStudent выглядит так:

 public String getInfoForStudent (int studentIndex)
    {
        return sts.get(studentIndex).toString();
    }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...