Невозможно корректно вызвать функцию void в Java для вывода на консоль

#java

#java

Вопрос:

У меня есть следующий класс, написанный в Employee.java script:

 public class Employee {
    //***************************************************************
    //
    //  Developer:         Erin
    //
    //  Program #:         3
    //
    //  File Name:         Program3.java
    //
    //  Course:            Object-Oriented Programming - Java 
    //
    //  Due Date:          
    //
    //  Instructor:        Prof. Fred
    //
    //  Chapter:           3
    //
    //  Description:
    //  Program creates an Employee class that includes three (3) private instances:
        //   1) first name (String)
        //   2) last name (String)
    //   3) monthly salary (double)
    //  Program provides:
    //   a) a constructor that initializes instance variables
    //   b) set and get methods for each instance variable
    //   c) test app named EmployeeTest that demonstrates Employee class capabilities
    //   d) two (2) Employee objs, from which obj's yearly salary is displayed
    //   e) display of 20% raise for each Employee;s yearly salary
    //
    //***************************************************************
            private String _first_name;
            private String _last_name;
            private double _monthly_salary;

            public Employee(String first_name, String last_name, double monthlySalary)
            {
               setFirstName(first_name);
               setLastName(last_name);
                setMonthlySalary(monthlySalary);
            }
           
            public String getFirstName()
            {
                return _first_name;
            }
            public void setFirstName(String first_name)
            {
                _first_name = first_name;
            }
           
            public String getLastName()
            {
                return _last_name;
            }
           
            public void setLastName(String lastName)
            {
                _last_name =lastName;
            }
           
            public double getMonthlySalary()
            {
                return _monthly_salary;
            }
           
            public void setMonthlySalary(double monthlySalary)
            {
                if(monthlySalary < 0.0)
                {
                    monthlySalary = 0.0;
                }
               
                _monthly_salary = monthlySalary;
            }
    //***************************************************************
    //
    //  Method:       developerInfo
    // 
    //  Description:  The developer information method of the program
    //
    //  Parameters:   None
    //
    //  Returns:      N/A 
    //
    //**************************************************************
    public void developerInfo()
    {
       System.out.println("Name:    Erin");
       System.out.println("Course:  Object-Oriented Programming");
       System.out.println("Program: Three n");
    }
}
  

С соответствующим тестовым классом, написанным в отдельном скрипте, вызываемом EmployeeTest.java:

 public class EmployeeTest {
    public static void main(String[] args) {
        
        **developerInfo();**
        
        Employee employee1 = new Employee("John", "Doe", 2875.00);
        Employee employee2 = new Employee("Jane", "Doe", 3150.00);

        System.out.printf("%s %n", "Before 20% raise:");
        System.out.printf( "Employee 1: %s %s; Yearly Salary: $%.2fn",
                employee1.getFirstName(), employee1.getLastName(),
                12 * employee1.getMonthlySalary() );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: $%.2fn",
                employee2.getFirstName(), employee2.getLastName(),
                12 * employee2.getMonthlySalary() );
        
        employee1.setMonthlySalary(employee1.getMonthlySalary() * 1.2);
        employee2.setMonthlySalary(employee2.getMonthlySalary() * 1.2);

        System.out.printf("%s %n", "After 20% raise:");
        System.out.printf( "Employee 1: %s %s; Yearly Salary: $%.2fn",
                employee1.getFirstName(), employee1.getLastName(),
                12 * employee1.getMonthlySalary() );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: $%.2fn",
                employee2.getFirstName(), employee2.getLastName(),
                12 * employee2.getMonthlySalary() );
        
    }
}
  

Я не могу понять, как вызвать функцию developerInfo, чтобы вывести ее на консоль. Ожидаемый результат:

 Name: Erin
Course: Object-Oriented Programming
Program: Three

Before 20% raise: 
Employee 1: John Doe; Yearly Salary: $34500.00
Employee 2: Jane Doe; Yearly Salary: $37800.00
After 20% raise: 
Employee 1: John Doe; Yearly Salary: $41400.00
Employee 2: Jane Doe; Yearly Salary: $45360.00
  

Любая информация была бы очень признательна! Спасибо!

Комментарии:

1. Сделайте метод статическим static public void developerInfo() {... и вызовите его следующим образом Employee.developerInfo();

2. Почему бы вам не использовать экземпляры employee для вызова #developerInfo() . Что-то вроде employee1.developerInfo() ??

3. В соглашениях об именовании Java классы в camelCase начинаются с заглавной буквы; методы и переменные также находятся в camelCase, начиная со строчных букв. У них нет подчеркивания. Они не начинаются с символа подчеркивания. Следование этим соглашениям упрощает чтение программ программистами Java.

Ответ №1:

Существует две возможности. Сначала вы можете сделать метод статическим:

 public static void developerInfo() {
    System.out.println("Name:    Erin");
    System.out.println("Course:  Object-Oriented Programming");
    System.out.println("Program: Three n");
}
  

Затем вы можете вызвать метод с Employee.developerInfo() помощью . Во-вторых, вы можете использовать экземпляр Employee класса и вызвать метод:

 employee1.developerInfo();
  

Поскольку это напрямую не связано с сотрудником, я бы выбрал первый вариант или передал метод на аутсорсинг.

Комментарии:

1. Большое вам спасибо!!! Я не знал, что вы можете сделать метод статическим. Это было легко исправить, еще раз спасибо! @flaxel