Как я могу получить доступ к методам класса Department, используя объект класса Student

Создайте класс Department со следующими закрытыми переменными-членами

int did
String dname

Включите соответствующие методы получения и установки в класс отдела.

Создайте класс Student со следующими закрытыми переменными-членами.

int sid
String sname
Department department

Включите соответствующие методы получения и установки в класс Student.

Создайте класс TestMain с основным методом.

В дополнение к основному методу создайте метод

       public static Student createStudent() -  All input as shown in the sample input should be got in this method.  Set the values to the Student object and return that object

Примечание. В основном методе вызовите метод createStudent и распечатайте сведения об объекте, возвращенном этим методом.

Я уже пытался создать новый объект, используя имя отдела, но не могу получить доступ к методам

import java.util.Scanner;

public class TestMain {

    public static Student student;
    public static Department department;

    public static void main(String args[]) {
        createStudent();
        System.out.println("Department id:" + department.getDid());
        System.out.println("Department name:" + department.getDname());
        System.out.println("Student id:" + student.getSid());
        System.out.println("Student name:" + student.getSname());
    }

    public static Student createStudent() {
        Scanner sc = new Scanner(System.in);
        student = new Student();
        department = new Department();
        System.out.println("Enter the Department id:");
        department.setDid(sc.nextInt());
        System.out.println("Enter the Department name:");
        department.setDname(sc.next());
        System.out.println("Enter the Student id:");
        student.setSid(sc.nextInt());
        System.out.println("Enter the Student name:");
        student.setSname(sc.next());
        return student;
    }
}

public class Student {

    private int sid;
    private String sname;
    private Department department;

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }
}

public class Department {

    private int did;
    private String dname;

    public int getDid() {
        return did;
    }

    public void setDid(int did) {
        this.did = did;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }
}

Пример ввода 1:

Enter the Department id:
100
Enter the Department name:
Computerscience

Enter the Student id:
123
Enter the Student name:
Sudha

Пример вывода 1:

Department id:100
Department name:Computerscience
Student id:123
Student name:sudha

Если вы получаете сообщение об ошибке, опубликуйте его (и укажите, к какой строке (строкам) оно относится, поскольку мы не всегда можем сказать, каковы номера строк).

Scott Hunter 07.06.2019 20:29
В основном методе вызовите метод createStudent и распечатайте сведения об объекте, возвращенном этим методом.: Поскольку вы не сохраняете объект, возвращаемый этим методом, вы не можете ничего о нем напечатать. Примечание: это студент, а не факультет.
Scott Hunter 07.06.2019 20:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
2 461
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

вам не хватает:

student.setDepartment(department);

после этого вы можете сделать:

student.getDepartment().getSname();
import java.util.*;
public class TestMain
{
    public static Department d1;
    public static Student s1;
    public static Student createStudent()
    {
        Scanner sc=new Scanner(System.in);
        Student s1=new Student();
        Department d1=new Department();
        System.out.println("Enter the Department id:");
        int did=sc.nextInt();
        sc.nextLine();
        System.out.println("Enter the Department name:");
        String dname=sc.nextLine();
        System.out.println("Enter the Student id:");
        int sid=sc.nextInt();
        sc.nextLine();
        System.out.println("Enter the Student name:");
        String sname=sc.nextLine();
        d1.setDid(did);
        d1.setDname(dname);
        s1.setSid(sid);
        s1.setSname(sname);
        s1.setDepartment(d1);
        return s1;
    }
    public static void main(String[] args)
    {
        s1=TestMain.createStudent();
        System.out.println("Department id:"+d1.getDid());
        System.out.println("Department name:"+d1.getDname());
        System.out.println("Student id:"+s1.getSid());
        System.out.println("Student name:"+s1.getSname());
    }
}
public static void main(String args[]) throws NumberFormatException, IOException
{
 s1 =  createStudent();
 d1 = s1.getDepartment(); // THIS WAS MISSING IN ANSWER 2
 System.out.println("Department id:"+d1.getDid());
 System.out.println("Department name:"+d1.getDname());
 System.out.println("Student id:"+s1.getSid());
 System.out.println("Student name:"+s1.getSname());

}

В этом случае необходимо сделать 2 вещи.

  1. При «установке» значений для всех идентификаторов и имен после того, как были установлены did и dname, чтобы получить к ним доступ через объект ученика, вы должны «установить» комбинацию did & dname для объекта отдела внутри класса ученика.

    department.setDid(did);
    department.setDname(dname);
    student.setSid(sid);
    student.setSname(sname);
    student.setDepartment(department);
    
  2. Кроме того, теперь, когда это установлено с правильными значениями, перед операторами Sysout в Main вы должны создать объект для класса Department. И данные для этого поступают путем вызова getDepartment() в студенческом классе (помните, что эта функция возвращает объект отдела).

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student student = createStudent();
        Department department = student.getDepartment();
        System.out.printf("Department id:%d",department.getDid()).println();
        System.out.printf("Department name:%s",department.getDname()).println();
        System.out.printf("Student id:%d",student.getSid()).println();
        System.out.printf("Student name:%s",student.getSname()).println();
    }
    

Другие вопросы по теме