Java Help: Использование классов - PullRequest
2 голосов
/ 09 августа 2009

Теперь я прочитал и об этом, но я просто застрял. Любая помощь приветствуется. Я ищу подсказки. Код компилируется и работает нормально, но я не думаю, что переменные хранятся в классе сотрудников, и я не уверен, что правильно понимаю использование конструктора.

Требования: Я закончил:

Значения проверяются, чтобы убедиться, что они положительные числа.

Ввод остановки как программа окончания имени сотрудника.

Возникли проблемы с

Использует класс для хранения

  • имя
  • почасовая ставка
  • отработанных часов

Использование конструктора для инициализации информации о сотруднике и метод в этом классе для рассчитать еженедельную оплату.

Ответы [ 4 ]

2 голосов
/ 09 августа 2009

В дополнение к тому факту, что вы не использовали конструктор для установки ваших переменных, как уже упоминалось другими. Методы установки выполняют no-ops. Вот почему вы не получаете ожидаемых результатов. Вы устанавливаете локальный var для себя, а не для члена var.

Вам нужно либо изменить локальные имена переменных, либо изменить имена членов-членов, либо изменить сеттеры, чтобы использовать ключевое слово "this"

 public void sethoursWorked(float hoursWorked)
 { 
    this.hoursWorked = hoursWorked;
 } 
2 голосов
/ 09 августа 2009

Вот пара подсказок:

Используйте конструктор для инициализации информация о сотрудниках

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

Возможно, «конструктор для инициализации информации о сотруднике» означает, что конструктор должен иметь возможность принимать значения, в которые объект Employee должен инициализировать свои поля.

Учебники по Java содержат страницу Предоставление конструкторов для ваших классов с примерами, которые должны помочь в создании такого конструктора.

... и метод в этом классе для рассчитать еженедельную оплату

Кажется, это говорит о том, что должен существовать метод, который виден только самому себе и недоступен для других, чтобы вычислить значение для поля weeklyPay.

Опять же, из Учебники по Java , Управление доступом к членам класса обсуждает шоу для изменения видимости методов.

Читая содержание задания, кажется, что вы взглянете на Урок: классы и объекты из Учебники по Java могут быть полезны, так как в нем есть несколько хороших примеров и пояснения к понятиям объектно-ориентированного программирования.

1 голос
/ 09 августа 2009

Вы заметите, что вас просят создать класс, в котором хранятся имя, почасовая ставка и отработанные часы, а вас попросят создать метод , который рассчитывает еженедельную оплату. Другими словами, у вас не должно быть weeklyPay переменной экземпляра. Всякий раз, когда пользователь запрашивает еженедельную оплату (с помощью вашего метода getWeeklyPay()), вы вычисляете и возвращаете его напрямую, не сохраняя его в переменной экземпляра.

Затем, чтобы реально использовать этот результат, вам нужно изменить это:

Employee.getweeklyPay();// Calculate weeklyPay ( hoursWorked * hourlyRate )
weeklyPay = ( hoursWorked * hourlyRate );

примерно так:

weeklyPay = employee.getWeeklyPay();

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

0 голосов
/ 04 декабря 2012

Окончательный ответ от ОП:

/** Payroll3.java | Due 8/09/09 
** IT 2015 Java Programming | lazfsh | Axia College - University of Phoenix */

import java.util.Scanner;// Import and use scanner

public class Payroll3 {// main method begins
   public static void main( String args[] ) {

   // Initialize
   boolean stop = false;// Variable for exit procedure
   String endProgram = "";// Variable to explain exit procedures blank 1st time
   int version = 3;// Version number

   // Welcome message   
   System.out.printf( 
   "\nWelcome to the Payroll Program v.%d\n", version );//Welcome message      

   while ( stop == false) {// Run program until stop equals true 

      Scanner input = new Scanner( System.in );// new Scanner for CL input
      Employee Employee = new Employee(); // new Employee constructor

      // Prompt for and input name
      System.out.printf( "\nEnter name of the employee%s:", endProgram );
      Employee.setempName(input.nextLine());// Accept input & Store

      if ( Employee.getempName().equals( "stop" )) {// If = end program w/message
         System.out.printf( "\n%s\n%s\n\n", "....", "Thanks for using Payroll Program");
         stop = true;}
      else{// Continue retrieve hourlyRate, hoursWorked & Calculate

         do {// Prompt for and input hourlyRate
            System.out.printf( "\n%s", "Enter hourly rate: $" );
            Employee.sethourlyRate(input.nextFloat());// Accept input & Store
            if ( Employee.gethourlyRate() < 1 ) {// Show error for negative #
               System.out.printf( "%s", "Enter a positive number.");}
            else;{}// Continue
            } while ( Employee.gethourlyRate() < 1 );// End loop if positive number recieved

         do {// Prompt for and input hoursWorked
            System.out.printf( "\n%s", "Enter number of hours worked:" );
            Employee.sethoursWorked(input.nextFloat());// Accept input & Store
            if ( Employee.gethoursWorked() < 1 ) {// Show error for negative #
               System.out.printf( "%s", "Enter a positive number.");}
            else;{}// Continue
            } while ( Employee.gethoursWorked() < 1 );// End loop if positive number recieved

         // Display formatted results
         System.out.printf( "\n%s's weekly pay is $%,.2f\nHourly rate ($%,.2f) multiplied by hours worked (%.0f)\n\n...Ready for next employee.\n\n",
         Employee.getempName(), Employee.getweeklyPay(), Employee.gethourlyRate(), Employee.gethoursWorked() );

// Debug Line         Employee.showVariables();         

         }// end retrieve hourlyRate, hoursWorked & Calculate

         endProgram = ( ", \n(Or type \"stop\" to end the program)" );//explain exit procedure on second empName prompt

      }// ends program when stop equals true

   }// end method main

}//end class Payroll3

Класс работника

/** Employee Class | Initializes and storeds data for employee
      Also provides method to calculate weekly pay.
*/

// Import statements
import java.util.Scanner;// Import and use scanner


public class Employee {//Begin Employee class
   Scanner input = new Scanner( System.in );// new Scanner for CL input

   // Declare instance variables
   String empName; // Declare name as string
   float hourlyRate; // Declare hourlyRate as float
   float hoursWorked; // Declare hoursWorked as float

   // constructor initializes employee information
   public Employee() { // Initialize (clear) instance variables here
      empName = "";
      hourlyRate = 0; 
      hoursWorked = 0; 
      } // end constructor

   // Begin methods
   public void setempName(String empName) {// public method to set the employee name 
      this.empName = empName;}// end method setempName

   public String getempName() {// public method to get the employee name
      return empName;}// end method getempName

   public void sethourlyRate(float hourlyRate) {// public method to set the hourly Rate
      this.hourlyRate = hourlyRate;}// end method set hourly Rate

   public float gethourlyRate() {// public method to retrieve the hourly Rate
      return hourlyRate;} // end method get hourly Rate

   public void sethoursWorked(float hoursWorked) {// public method to set the hours Worked
      this.hoursWorked = hoursWorked;} // end method set hours Worked

   public float gethoursWorked() {// public method to retrieve the hours Worked
      return hoursWorked;} // end method get hours Worked

   public float getweeklyPay() {// public method to retrieve weekly Pay
      return ( hoursWorked * hourlyRate );}// end method get weeklyPay

   /* Test line
   public void showVariables(){
   System.out.printf( "empName=%s, hourlyRate=%s, hoursWorked=%s", this.empName, this.hourlyRate, this.hoursWorked );} */

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