簡體   English   中英

如何將 object 從一個 class 分配給另一個 class 以及如何在 Z57A97A39435CFDFED96E03 中計算 double 和 int?

[英]How do I assign object from one class to another class and how do I calculate double and int inside an ArrayList?

我有一個任務,但我在嘗試做其中的一部分時遇到了問題。 感謝是否有人可以幫我一把。

作業簡介: https://pastebin.com/3PiqvfTE

主要方法: https://pastebin.com/J2kFzB3B

import java.util.ArrayList;
import java.util.Scanner;

public class mainMethod {

    public static void main(String[] args) {

        //scanner
        Scanner scanner = new Scanner (System.in);


        //subject object
        Subject subject = new Subject (0,null,0);
        System.out.println("How many subject do you want to enter: ");
        int subjectNumber = scanner.nextInt();
        for (int j = 0; j < subjectNumber; j++) {

            //subject ID
            System.out.println("Please enter the subject ID: ");
            int subID = scanner.nextInt();

            //subject Name
            System.out.println("Please enter subject name: ");
            String subName = scanner.next();

            //subject fee
            System.out.println("Please enter subject fee: ");
            double subFee = scanner.nextDouble();

            //add subject
            subject.addSubject(subID, subName, subFee);
        }

        //display subject
        System.out.println(subject.getSubject());



        /*
        //loop for part time teacher
        System.out.println("Please enter how many part time teacher do you have: ");
        int PTcounter = scanner.nextInt();
        for (int i = 0; i < PTcounter; i++) {
        */





        Teacher teach = new Teacher (0,null,null);

        //teacher employee ID
        System.out.println ("Please enter the teacher employee ID: ");
        int tid = scanner.nextInt();

        //teacher name 
        System.out.println("Please enter the teacher name: ");
        String tname = scanner.next();

        //teacher gender
        System.out.println("Please enter the teacher gender: ");
        String tgender = scanner.next();

        //add teacher details
        teach.addTeacher(tid, tname, tgender);

        //display teacher details
        System.out.println(teach.getTeacher());





        //call address class
        Address address = new Address (0,null,null,0);

        //address house number
        System.out.println("Please enter house number: ");
        int addyNum = scanner.nextInt();

        //address street name
        System.out.println("Please enter street name: ");
        String StreetName = scanner.next();

        //address city
        System.out.println("Please enter city: ");
        String City = scanner.next();

        //address post code
        System.out.println("Please enter postcode: ");
        int Postcode = scanner.nextInt();

        //add address
        address.addAddress(addyNum, StreetName, City, Postcode);

        //display address
        System.out.println(address.getAddress());




        //call Part Time Salary class
        PartTimeSalary ptSalary = new PartTimeSalary(0,0);

        //max hours
        System.out.println("Please enter maximum work hours: ");
        int maxHours = scanner.nextInt();

        //hourly rate
        System.out.println("Please enter hourly rate: ");
        double hourlyRate = scanner.nextDouble();

        ptSalary.addPTSalary(maxHours, hourlyRate);

        System.out.println(ptSalary.getHourlyRate());

        //System.out.printf("Teacher details is %s, Subject details is %s, Address is %s", teach.toString(),subject.toString(),address.toString());



    }


}

第一個問題。 我有一個科目 class 和一個老師 class。 教師最多可教授 4 個科目。 在輸入教師詳細信息之前,我已提示用戶輸入主題詳細信息,因此當用戶輸入教師詳細信息時,他們只需使用 subjectID 即可將主題分配給教師。 我在執行此操作時遇到問題。 我的主題已經存儲在 ArrayList 中,但是如何將其與老師聯系起來。 最后程序會顯示每位老師教的科目。

主題 Class: https://pastebin.com/iBYFqYDN

import java.util.ArrayList;
import java.util.Arrays;

public class Subject {

    private int subjectID;
    private String subjectName;
    private double fee;
    private ArrayList <Subject> subjectList = new ArrayList <Subject>();

    public Subject(int subjectID, String subjectName, double fee) {
        this.subjectID = subjectID;
        this.subjectName = subjectName;
        this.fee = fee;
    }

    public int getSubjectID () {
        return subjectID;
    }

    public void setSubjectID (int subjectID) {
        this.subjectID = subjectID;
    }

    public String getSubjectName () {
        return subjectName;
    }

    public void setSubjectName (String subjectName) {
        this.subjectName = subjectName;
    }

    public double getFee () {
        return fee;
    }

    public void setFee (double fee) {
        this.fee = fee;
    }

    @Override
    public String toString() {
        return "[subjectID=" + subjectID + ", subjectName=" + subjectName + ", fee=" + fee + "]";
    }

    public void addSubject (int subjectID, String subjectName, double fee) {
        subjectList.add(new Subject(subjectID, subjectName, fee) );
    }

    public String getSubject () {
        return Arrays.toString(subjectList.toArray());
    }


}

老師class: https://pastebin.com/Np7xUry2

import java.util.ArrayList;
import java.util.Arrays;

public class Teacher {

    private int employeeID;
    private String name;
    private String gender;
    private ArrayList <Teacher> teacherDetailsList;

    public Teacher (int employeeID, String name, String gender) {
        this.employeeID = employeeID;
        this.name = name;
        this.gender = gender;
        this.teacherDetailsList = new ArrayList <Teacher>();
    }

    public int getEmployeeID () {
        return employeeID;
    }

    public void setEmployeeID (int employeeID) {
        this.employeeID = employeeID;
    }

    public String getName () {
        return name;
    }

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

    public String getGender () {
        return gender;
    }

    public void setGender (String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "[employeeID=" + employeeID + ", name=" + name + ", gender=" + gender + "]";
    }

    public void addTeacher (int employeeID, String name, String gender) {
        teacherDetailsList.add(new Teacher (employeeID,name,gender));
    }

    public String getTeacher () {
        return Arrays.toString(teacherDetailsList.toArray());
    }
}

第二個問題。 教師將是兼職或全職教師。 兼職老師將有他們可以工作的最長工作時間和他們將獲得的每小時工資,因此兼職老師的最終工資將為“最長小時數”乘以“每小時工資”。 我在 ArrayList 中存儲了“小時費率”和“最大工作時間”,但是我如何調用它們來進行乘法運算,然后在最后顯示。

兼職工資class: https://pastebin.com/iGKpu87Y

import java.util.ArrayList;

public class PartTimeSalary {

    private int maxHour;
    private double hourlyRate;
    private double hourlySalary;
    private ArrayList <PartTimeSalary> PTSalary = new ArrayList <PartTimeSalary>();
    private ArrayList <Double> finalHourlySalary = new ArrayList <Double>();

    public PartTimeSalary (int maxHour, double hourlyRate) {
        this.maxHour = maxHour;
        this.hourlyRate = hourlyRate;
    }

    public int getMaxHours () {
        return maxHour;
    }

    public void setMaxHour (int maxHour) {
        this.maxHour = maxHour;
    }

    public double getHourlyRate () {
        return hourlyRate;
    }

    public void setHourlyRate (double hourlyRate) {
        this.hourlyRate = hourlyRate;
    }

    public double getHourlySalary() {
        hourlySalary = hourlyRate*maxHour;
        return hourlySalary;
    }

    public void addPTSalary (int maxHour, double hourlyRate) {
        PTSalary.add(new PartTimeSalary(maxHour,hourlyRate));
    }


    public void FinalHourlySalary (double hourlySalary) {
        hourlySalary = hourlyRate * maxHour;
        finalHourlySalary.add(hourlySalary);
    }


    public ArrayList<Double> getFinalSalary () {
        return (new ArrayList <Double>());
    }
}

第三個問題。 我有一個地址 class 應該是老師 class 的一部分。 我似乎無法將地址 class 與老師 class 聯系起來。

地址 class: https://pastebin.com/s2HN5p80

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Address {

    private int houseNum;
    private String streetName;
    private String city;
    private int postcode;
    private List <Address> address = new ArrayList <Address>();

    public Address (int houseNum, String streetName, String city, int postcode) {
        this.houseNum = houseNum;
        this.streetName = streetName;
        this.city = city;
        this.postcode = postcode;
    }

    public int getHouseNum() {
        return houseNum;
    }

    public void setHouseNum (int houseNum) {
        this.houseNum = houseNum;
    }

    public String getStreetName() {
        return streetName;
    }

    public void setStreetName (String streetName) {
        this.streetName = streetName;
    }

    public String getCity() {
        return city;
    }

    public void setCity (String city) {
        this.city = city;
    }

    public int getPostcode() {
        return postcode;
    }

    public void setPostcode (int postcode) {
        this.postcode = postcode;
    }


    public void addAddress (int houseNum, String streetName, String city, int postcode) {
        address.add(new Address (houseNum,streetName,city,postcode));
    }


    @Override
    public String toString() {
        return "[houseNum=" + houseNum + ", streetName=" + streetName + ", city=" + city + ", postcode="
                + postcode + "]";
    }

    public String getAddress () {
        return Arrays.toString(address.toArray());
    }


}

謝謝

問題 1)

  • 將“teacherDetailsList”和“subjectList”ArrayLists放在main方法中,而不是consructors中。 在主要方法中添加教師和科目,而不是構造函數。
  • 添加一個名為“mySubjects”的新 ArrayList 作為教師 Class 的字段
  • 在老師class中添加以下2個方法:
public Teacher (int employeeID, String name, String gender, ArrayList<Subject> s) {
    this.employeeID = employeeID;
    this.name = name;
    this.gender = gender;
    this.mySubjects=s;
}
public Teacher (int employeeID, String name, String gender, Subject s) {
    this.employeeID = employeeID;
    this.name = name;
    this.gender = gender;
    this.mySubjects.add(s);
}
public void addSubject(Subject s, boolean b){
    if(mySubjects.size()<4)mySubjects.add(s);
    else throw OutOfBoundsError;
}
public void removeSubject(Subject s, boolean b){
    mySubject.remove(s);
}
public void addSubject(Subject s){
    s.changeTeacher(s);
}
public void removeSubject(Subject s){
    mySubject.remove(s);
}
  • 將以下方法和字段添加到學生 class
private Teacher teacher;
public Subject(int subjectID, String subjectName, double fee, Teacher t) {
    this.subjectID = subjectID;
    this.subjectName = subjectName;
    this.fee = fee;
    this.setTeacher(t);
}
public void setTeacher(Teacher t){
    try{
        t.addSubject(this);
        teacher=t;
    }
    catch(OutOfBoundsError e){
        System.out.println(t.getName()+" already has a full schedule.");
    }
}
public void changeTeacher(Teacher t){
    teacher.removeSubject(this);
    teacher = t;
    t.addSubject(this);
}

問題2)

  • 在 class 主題中創建一個新的雙字段、構造函數參數(對於類中的每個構造函數)、mutator 方法和訪問器 mutator,稱為 maxHour
  • 給老師 class 添加一個雙字段,稱為salary。 如果老師是兼職,在構造函數中將其設置為 0。
  • 將此方法添加到class老師:
public double getSalary(){
    if(salary!=0) return salary;
    double s=0;
    for(Subject i: mySubjects) s+=i.getFee()*i.getMaxHours();
    return s;
}
  • 老實說,您現在不再需要 PartTimeSalary class。

問題 3

  • 在 class Teacher 中創建一個新的 Address 字段、構造函數參數(對於類中的每個構造函數)、mutator 方法和訪問器 mutator 稱為 myAddress
  • 不要打擾地址 Class 中的 ArrayList 內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM