Как сравнить атрибуты из нескольких экземпляров класса? - PullRequest
0 голосов
/ 26 мая 2020

Хорошо, вот и маринад. Я беру этот курс, который учит программированию logi c в Java. Я знаю только немного JavaScript, поэтому Java для меня в значительной степени инопланетная технология.

Я выполняю это задание, где мне нужно создать приложение для управления конференциями (которое работает только на консоли) . На каждой конференции проводятся лекции (сколько угодно). Каждая конференция имеет такие атрибуты, как имя менеджера конференции, его номер телефона, его почасовая ставка и т. Д .; То же самое и с лекциями. Я хотел иметь возможность вводить эти данные с помощью метода сканера. Вот что я сделал до сих пор:

Начал создавать два класса:

1) создатель конференции

import java.util.*;

public class Conference {
    String nameConference;
    String nameManagerConference;
    String telManagerConference;
    String dateStartConference;
    String dateEndConference;
    float hourlyRateManager;
    float hoursAmountConference;

    public void setConferenceData() {
        Scanner keyboard = new Scanner(System.in);

        System.out.print("Conference name: ");
        this.nameConference = keyboard.nextLine();

        System.out.print("Conference manager name: ");
        this.nameManagerConference = keyboard.nextLine();

        System.out.print("Conference manager telephone number: ");
        this.telManagerConference = keyboard.nextLine();

        System.out.print("Conference start date: ");
        this.dateStartConference = keyboard.nextLine();

        System.out.print("Conference end date: ");
        this.dateEndConference = keyboard.nextLine();

        System.out.print("Manager hourly rate: ");
        this.hourlyRateManager = keyboard.nextFloat();

        System.out.print("Conference amount of hours: ");
        this.hoursAmountConference = keyboard.nextFloat();

        System.out.println(this.nameManagerConference + ", manager of the conference " + "\"" + this.nameConference +"\"" + ", cost R$ " + (this.hoursAmountConference * this.hourlyRateManager));
    }
}

2) создатель лекции

import java.util.*;

public class Lectures {
    float totalCost = 0;
    String lecturesList = "Lectures list: ";
    ArrayList<Float> arrLecturesCostTotal = new ArrayList<>();
    ArrayList<String> listLectures = new ArrayList<>();

    public void getLecturesTotalCost() {
        for (int i = 0; i < arrLecturesCostTotal.size(); i++) {
             totalCost += arrLecturesCostTotal.get(i);
        }
        System.out.println("The total lectures cost is $ " + totalCost); 
    }

    public void getLecturesList() {
        for (int i = 0; i < listLectures.size(); i++) {
             lecturesList += "\n" + "- " + listLectures.get(i);
        }
        System.out.println(lecturesList);
    }

    public class Lecture{
        String lectureTitle;
        String lectureStartHour;
        String lecturerName;
        String lecturerTelephone;
        String lectureDescription;
        float lecturerHourlyRate;
        float lectureHoursAmount;
        float lectureCost = 0;

        public void setDataLecture() {
            Scanner keyboard = new Scanner(System.in);

            System.out.print("Lecture title: ");
            this.lectureTitle = keyboard.nextLine();

            System.out.print("Lecture start time: ");
            this.lectureStartHour = keyboard.nextLine();

            System.out.print("Lecturer name: ");
            this.lecturerName = keyboard.nextLine();

            System.out.print("Lecturer telephone number: ");
            this.lecturerTelephone = keyboard.nextLine();

            System.out.print("Lecture description: ");
            this.lectureDescription = keyboard.nextLine();

            System.out.print("Lecturer hourly rate ");
            this.lecturerHourlyRate = keyboard.nextFloat();

            System.out.print("Lecture hours amount: ");
            this.lectureHoursAmount = keyboard.nextFloat();

                this.lectureCost = this.lecturerHourlyRate * this.lectureHoursAmount;
                System.out.println("The cost of the lecture " + this.lecturerName + " is $ " + this.lectureCost);

                arrLecturesCostTotal.add(this.lecturerHourlyRate * this.lectureHoursAmount);
                listLectures.add(this.lectureTitle + " by " + this.lecturerName);
        }
    }
}

Как видите, для каждого класса существует множество атрибутов.

Затем я приступил к созданию другого класса для создания объектов с помощью этих установщиков (setConferenceData () и setDataLecture ()).

public class Manager {
    public static void main(String[] args) {

        Conference conference01 = new Conference();
        Lectures lectureSet = new Lectures();

        Lectures.Lecture lecture01 = lectureSet.new Lecture();
        Lectures.Lecture lecture02 = lectureSet.new Lecture();

        conference01.setConferenceData();
        lecture01.setDataLecture();
        lecture02.setDataLecture();

        lectureSet.getLecturesList();
        lectureSet.getLecturesTotalCost();
    }
}

Итак, один из результатов - сравнение затрат на лекции. Мне нужно вернуть самые и самые дешевые лекции (их стоимость и их названия). Однако я не могу понять, как это сделать, потому что не знаю, как сравнивать значения атрибутов экземпляров. Тем более, что они создаются путем ввода данных в консоль.

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

Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

1 голос
/ 26 мая 2020

Несколько советов.

  1. Вероятно, вам не следует вызывать Scanner в своих классах данных. Вместо этого вызовите сканер в основном методе и просто передайте результаты своим классам через конструктор или сеттеры. Таким образом вы разделяете задачи, а классы вроде Conference и Lecture не должны ничего знать о вашем методе ввода (в данном случае - сканере).
  2. Конференция должна содержать лекции, значит, List<Lecture>, вероятно, должен быть внутри класса Conference среди других полей.
  3. Лекция, вероятно, должна иметь два поля (среди прочего) double lengthHours и double hourlyCost. Тогда у вас может быть метод в Lecture:
public double totalCost() {
  return hourlyCost * lengthHours;
}

И тогда у вас может быть метод в Conference:

public double totalCost() {
  double lecturesTotal = 0.0;
  for (Lecture lecture : lectures {
    lecturesTotal += lecture.totalCost();
  }
  return lecturesTotal + //other stuff like conference managers pay;
}

Надеюсь, что вы войдете в в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...