当前位置: 首页 > 知识库问答 >
问题:

有人能帮我用java中的“tostring”方法吗?

段干英杰
2023-03-14

我正在做一个面向对象的作业...它有四个类人员,学生和员工都扩展人员和教师扩展员工...

我已经做了我能做的几乎所有的事情,但是我不能用tostring方法打印出值,也不能填充数组。我已经使用了getter setter,所有的构造函数和方法仍然不能得到任何输出。这里是人类,所有剩下的三个类都已经完成了。加上主文件

abstract class Person 
{
    protected int Id;//"protected"Only child can use this
    protected String Name;

    public Person() {}


    public Person(int id,String name) 
    {
        this.Id=id;
        this.Name=name;
    }

    public int getId() 
    {
        return this.Id;
    }

    public void setId(int id) 
    {
         this.Id=id;
    }

    public String getName() 
    {
        return Name;
    }

    public void setName(String name) 
    {
        this.Name=name;
    }

    public String toString() 
    { 
        return Id + Name + " is a student "; 
    }


    public static int getMaxID()
    {

        return 0;
    }
////////////////////////////////////////////////////////////////////////////////
public class Employee extends Person 
{
    protected double Salary;
    protected String employeeName;

    public Employee() {}

    public Employee(double salary) 
    {
        this.Salary=salary;
    }

    public Employee(String employeename) 
    {
        this.employeeName=employeename;
    }

    public String getemployeeName() 
    {
        return employeeName;
    }

    public void setemployeeName(String employeename) 
    {
        this.employeeName=employeename;
    }

    public double getSalary() 
    {
        return this.Salary;
    }

    public void setSalary(double salary) 
    {
          this.Salary=salary;
    }

    public String toString() 
    { 
        return employeeName + " is an instructor earning a salary of " + Salary; 
    }

}
////////////////////////////////////////////////////////////////////////////////
public class Student extends Person
{
    protected int teacherID;
    protected String teacherName;
    protected String studentName;

    public Student() {}

    public Student(int teacherid,String teachername)
    {
        this.teacherID=teacherid;
        this.teacherName=teachername;
    }


    public Student(String studentname) 
    {
        this.studentName=studentname;
    }


    public Student(String teachername, String studentname, Person[] person_array)
    {
        this.teacherName=teachername;
        this.studentName=studentname;
    }

    public int getteacherID() 
    {
        return this.teacherID;
    }

    public void setteacherID(int teacherid) 
    {
         this.teacherID=teacherid;
    }

    public String getteacherName() 
    {
        return teacherName;
    }

    public void setteacherName(String teachername) 
    {
        this.teacherName=teachername;
    }

    public String toString() 
    { 
        return studentName + " is a student "; 
    }

}
////////////////////////////////////////////////////////////////////////////////
public class Instructor extends Employee
{
    int[] studentID=new int[10];
    protected String instructorName;

    public Instructor(String instructorname) 
    {
        this.instructorName=instructorname;
    }

    public Instructor(String instructorname, double salary) 
    {
        this.instructorName=instructorname;
        this.Salary=salary;
    }

    public double getSalary() 
    {
        return Salary;
    }

    public void setSalary(int salary) 
    {
         this.Salary=salary;
    }

    public String getinstructorName() 
    {
        return instructorName;
    }

    public void setinstructorName(String instructorname) 
    {
        this.instructorName=instructorname;
    }

    static void findStudents(Person[] person_array)
    {

    }

    public String toString() 
    { 
        return instructorName + " is an instructor earning a salary of " + Salary; 
    }


}
////////////////////////////////////////////////////////////////////////////////
//CIS 459.23 Lab 2
//Due Oct 30 (Sunday)
//OSU wants you write some classes for their Personnel Record System. To make it simple,
//consider only 4 classes: Person, Employee, Instructor and Student. The following figure
//illustrates the relationship between these 4 classes. The Person class is the parent class of the
//Employee class and the Student class. The Employee class is the parent class of the Instructor
//class.
//The following are the tasks you need to complete for each of these classes.
// Create appropriate fields for each class. Necessary fields are listed. Add your own fields if
//needed. Some fields need to have appropriate constraint. Use your own way to make sure
//that these constraints are satisfied.
//o Person
//ID: int, starting from 1 and should be unique
//Name: String
//o Employee
//Salary: double and should not be negative
//o Student (For simplicity, assume that a student has at most 1 teacher)
//TeacherID: int. It’s his/her instructor's ID. 0 if no instructor is given
//TeacherName: String
//o Instructor:
//  StudentIDArray: int array. An array of students’ IDs of this instructor. Set the
//  array size to be 10, initially all 0s, assuming an instructor won’t have more than
//  10 students.
//   All the above fields are private and only accessible through the access methods.
//   A “toString()” method for each class to print out all the available information about the
//  current object. In Person class “toString()” is declared as abstract.
//   A static “findStudents(Person[] personArray)” method in the Instructor class to fill an
//  instructor object’s students ID array, and the corresponding students’ TeacherID fields. See
//  the test program for better understanding.
//   Person should be declared as abstract class.
//   Provide multiple constructors/methods if needed. Check the test.java program to see what
//  constructors/methods are necessary and what actions they should do.
//   If a class can use the parent class method and constructor, use “super” to call it to reduce the
//  redundant code.
//   Make sure this test.java program can work with your class.
//   sample output. From this sample output, you’ll know what information you should print out
//  for a specific object.
//  NOTE: the sample output is not the unique output format of the test program. The real output
//  format depends on how you design the toString() methods in each class. But make sure that your
//  program will print out as much information about each object’s fields as possible, including the
//  Person
//  Instructor
//  Employee Student
//  inherited fields and the fields defined in its own class.
//  HINT:
//      o There is NO main method in any of these 4 classes
//      o To make sure ID is unique across the objects, declare a static “LAST_ID” in the Person
//      class.
//      o Read descriptions in test.java VERY CAREFULLY for better
//      understanding!
//      Submit your Person.java, Emloyee.java, Student.java and Instructor.java files
//      Appendix 1: Test Program
/*
* Lab 2 Program to test the Person, Employee, Student, and Instructor classes.
*/
public class Lab2_Test
{

    public static void main(String[ ] args)
    {
        // uncommenting the following line should produce a compile error.
        // This is for testing of an abstract class.
        // Person p = new Person("George");
        final int MAX_HEADCOUNT = 20;
        Person[] person_array = new Person[MAX_HEADCOUNT];
        // A student named Peter
        person_array[0] = new Student("Peter");
        // An instructor named Peter
        person_array[1] = new Instructor("Peter");
        // An instructor named Sandy and her salary
        person_array[2] = new Instructor("Sandy", 25000);
        // A janitor named Bob
        person_array[3] = new Employee("Janitor Bob");
        // A student named Tom and his instructor is Peter.
        // The constructor needs to do three things:
        // 1: sets this student’s “TeacherName” field to be “Peter”,
        // 2: finds out the ID of the 1st instructor
        // who exists in the person_array so far and named "Peter",
        // and assign it to this student's “TeacherID” field.
        // Set it to be 0 if no instructor named Peter is found in the person_array so far
        // 3: records this student’s ID in the instructor’s StudentArray if such an instructor is found
        // right after executing the following statement
        // person_array[4].TeacherID = 2
        // person_array[4].TeacherName = “Peter”
        // person_array[1].StudentArray[0] = 5
        person_array[4] = new Student("Tom", "Peter", person_array);
        // A student named Maggie and her instructor is Susan
        // right after executing the following statement
        // person_array[5].TeacherID = 0
        // person_array[5].TeacherName = “Susan”
        person_array[5] = new Student("Maggie", "Susan", person_array);
        // An instructor named Susan and her salary
        person_array[6] = new Instructor("Susan", 40000);
        // After all objects are created,
        // instructors need to fill their students arrays,
        // and some students need to fill their TeacherIDs now,
        // since there may exist cases that when a Student object is created with instructor’s name,
        // the corresponding Instructor object hasn’t been created and is not in the person_array.
        // For example, person_array[6] is created after person_array[5].
        // You need to record person_array[5]’s ID in person_array[6]’s studentArray field,
        // and record person_array[6]’s ID in person_array[5]’s TeacherID field.
        // Note: if there are more than one Instructor objects
        // having the same names as a Student object’s TeacherName,
        // it’ll always be the first one’s ID assigned to the Student object’s TeacherID
        Instructor.findStudents(person_array);
        System.out.println("ID and name of all personnel in the array");
        for (int i = 0; i < Person.getMaxID(); i++)
        {
            System.out.println(person_array[i].getId() + ":" + person_array[i].toString());
        }

    }

共有1个答案

百里锋
2023-03-14

您正在尝试使用以下方式打印:

for (int i = 0; i < Person.getMaxID(); i++)
        {
            System.out.println(person_array[i].getId() + ":" + person_array[i].toString());
        }

但是,Person类中的getMaxID()方法返回一个硬编码的0,因此这个循环永远不会迭代,也永远不会到达print语句。

编辑:甚至检查maxId都没有意义。对照数组的长度进行检查:

for (int i = 0; i < person_array.length; i++)
        {
            System.out.println(person_array[i].getId() + ":" + person_array[i].toString());
        }
 类似资料: