2009-08-09 4 views
2

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

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

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

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

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

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

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

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

+0

"Возникли проблемы" это не вопрос. Какой у Вас вопрос? Что пошло не так? Что компилятор говорит вам? – spender

+0

Я тоже не понимаю вопроса :) – programmernovice

+0

Уточнил мой вопрос. Спасибо за быстрые комментарии! – gooddadmike

ответ

2

Вот несколько подсказок:

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

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

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

The Java Tutorials имеет страницу на Providing Constructors for Your Classes с примерами, которые должны помочь в создании такого конструктора.

... и метод в этом классе вычислить недельный заработок

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

Опять же, с The Java Tutorials, Controlling Access to Members of a Class Обсуждает шоу, чтобы изменить видимость методов.

Чтение содержимого задания, похоже, позволяет взглянуть на Lesson: Classes and Objects из The Java Tutorials, так как оно дает некоторые хорошие примеры и объяснения концепций объектно-ориентированного программирования.

1

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

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

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

во что-то вроде этого:

weeklyPay = employee.getWeeklyPay(); 

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

2

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

Вы должны либо изменить локальные имена Var, изменить имена член Var, или изменить сеттеры, чтобы использовать «это» ключевое слово

public void sethoursWorked(float hoursWorked) 
{ 
    this.hoursWorked = hoursWorked; 
} 
0

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

/** 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 
Смежные вопросы