2009-08-09 6 views
2

Maintenant, j'ai lu et à ce sujet, mais je suis juste coincé. Toute aide appréciée. Je cherche des indices. Le code compile et fonctionne bien, mais je ne pense pas que les variables sont stockées dans la classe des employés et je ne suis pas sûr de comprendre mon utilisation du constructeur.Java Aide: Utilisation des classes

Exigences: J'ai terminé:

Les valeurs sont pour vous assurer qu'elles sont nombres positifs.

Entrer l'arrêt en tant que programme de fin de nom d'employé .

la difficulté sur

Utilise une classe pour stocker

  • nom
  • taux horaire
  • heures travaillées

Utilisez un constructeur pour initialiser l'empl oyee informations et une méthode dans cette classe à calculer la rémunération hebdomadaire.

+0

"Avoir des problèmes" n'est pas une question. Quelle est ta question? Qu'est-ce qui ne va pas? Qu'est-ce que le compilateur vous dit? – spender

+0

Je ne comprends pas non plus la question :) – programmernovice

+0

Clarifié ma question. Merci pour les commentaires rapides! – gooddadmike

Répondre

2

Voici des conseils de couple:

Utilisez un constructeur pour initialiser l'information des employés

En regardant le code fourni, il y a un seul constructeur qui ne prend pas des arguments et de la volonté initialise les champs de l'objet à zéro. Peut-être que le «constructeur pour initialiser les informations sur les employés» signifie que le constructeur devrait être en mesure d'accepter des valeurs auxquelles l'objet Employee devrait initier ses champs.

The Java Tutorials a une page sur Providing Constructors for Your Classes avec des exemples qui devraient aider à créer un tel constructeur.

... et une méthode dans cette classe pour calculer le salaire hebdomadaire

Cela semble dire qu'il devrait y avoir une méthode qui est visible pour lui-même et non disponibles à d'autres pour pour calculer la valeur du champ weeklyPay.

Encore une fois, de The Java Tutorials, Controlling Access to Members of a Class discute show pour changer la visibilité des méthodes. En lisant le contenu de l'affectation, il semble que jeter un oeil à la Lesson: Classes and Objects de The Java Tutorials peut être utile, car il fournit de bons exemples et explications sur les concepts de la programmation orientée objet.

1

Vous remarquerez qu'il vous est demandé de créer une classe qui stocke le nom, le taux horaire et les heures travaillées, pendant que vous êtes invité à créer une méthode qui calcule le salaire hebdomadaire. En d'autres termes, vous ne devriez pas avoir une variable d'instance weeklyPay. Chaque fois que l'utilisateur vous demande le salaire hebdomadaire (au moyen de votre méthode getWeeklyPay()), vous le calculez et le renvoyez directement, sans le stocker dans une variable d'instance.

Ensuite, afin d'utiliser effectivement ce résultat, vous aurez besoin de changer ceci:

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

en quelque chose comme ceci:

weeklyPay = employee.getWeeklyPay(); 

Si vous ne donnez pas vraiment le résultat de votre méthode à une variable, vous ne pouvez pas utiliser le résultat.

2

En plus du fait que vous n'avez pas utilisé le constructeur pour définir vos variables, comme mentionné par d'autres. Les méthodes setter effectuent des no-ops. C'est pourquoi vous n'obtenez pas les résultats que vous attendez. Vous définissez la variable locale sur elle-même et non sur la variable membre.

Vous devez soit modifier vos noms var locales, changez le nom var membre, ou modifier les setters d'utiliser le « ce » mot-clé

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

La réponse finale de l'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 

Classe d'employé

/** 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 
Questions connexes