java - 如何创建一个带有数组的类,然后将值传递给程序?

标签 java

我的类(class)作业是这样的: “编写一个使用以下数组作为字段的工资单类:

  • employeeID - 一个由七个整数组成的数组,用于保存员工标识号。 该数组应使用以下数字进行初始化: 5658845 4520125 7895122 8777541 8451277 1302850 7580489
  • hours - 一个由七个整数组成的数组,用于保存每个员工的工作小时数。
  • payRate - 包含七个 double 值的数组,用于保存每个员工的小时工资率。
  • wages - 包含七个 double 的数组,用于保存每位员工的总工资。

类应该通过下标关联每个数组中的数据。 例如,hours 数组的元素 0 中的数字应该是员工的工作小时数 其标识号存储在 employeeID 数组的元素 0 中。 该员工的工资率应存储在 payRate 数组的元素 0 中。 除了适当的访问器和修改器方法外, 该类应该有一个接受雇员身份证号码的方法 作为参数并返回该雇员的总工资。

我在从我创建的程序中传递值时遇到问题。这是类(class):

public class moduleArray2
{
   final int NUM_EMPLOYEES = 7;
   int[] employeeID = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};
   int[] hours = new int[NUM_EMPLOYEES];
   double[] payRate = new double[NUM_EMPLOYEES];
   double[] wages = new double[NUM_EMPLOYEES];
   int employee = 0;
   double wage = 0;


   // setHours method
   public void setHours(int[] time)
   {
      time = hours;

   }

   // setPayRate method
   public void setPayRate(double[] pay)
   {
      pay = payRate;

   }

    // setWages method
   public void setWage(int[] time, int[] pay)
   {
      for (int index = 0; index < NUM_EMPLOYEES; index++)
         wages[index] = time[index] * pay[index];

   }

   //getEmployeeID method
   public int getEmployeeID(int index)
   {

      return employee;

   }   

   // getWage method
   public double getWage(int index)
   {


      return wage;

   }

}   

该程序应该显示每个员工编号并要求用户输入该员工的工时和工资率。然后它应该显示每个员工的身份证号码和工资总额。当我运行该程序时,它只是将所有内容列为零值,包括员工 ID 号。

import java.util.Scanner;

public class moduleArrayDemo2
{
   public static void main(String[] args)
   {
      final int NUM_EMPLOYEES = 7;
      int[] time = new int[NUM_EMPLOYEES];
      double[] pay = new double[NUM_EMPLOYEES];

      // Create new Scanner object
      Scanner keyboard = new Scanner(System.in);

      // Create employee object
      moduleArray2[] employee = new moduleArray2[NUM_EMPLOYEES];

      // A loop that creates objects for each element
      for (int i = 0; i < employee.length; i++)
         employee[i] = new moduleArray2();


      for (int i = 0; i < employee.length; i++)
      {
         System.out.print("Enter hours for Employee #" + employee[i].getEmployeeID(i) +
                           ": ");
         time[i] = keyboard.nextInt();
         employee[i].setHours(time);

         System.out.print("Enter how much Employee #" + employee[i].getEmployeeID(i) +
                          " makes per hour: ");
         pay[i] = keyboard.nextDouble();
         employee[i].setPayRate(pay);

      }

      for (int i = 0; i < employee.length; i++)
      {
         System.out.println("Employee #" + employee[i].getEmployeeID(i) + 
                            " Wages: " + employee[i].getWage(i));

      }    

   }

 }

我可以在一个简单的程序中做数组,我可以用创建这些类实例的程序来做类。类中的数组......我感到完全迷失了。我如何引用类中的数组以获取程序本身的值?如有任何反馈或建议,我们将不胜感激!

最佳答案

首先,您弄乱了访问器方法参数、它们的实际值和访问的对象。

class ModuleArray2
    int[] employeeID = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};
    int NUM_EMPLOYEES = employeeID.length; // I assume you've got it defined somewhere

    int[] hours = new int[NUM_EMPLOYEES];
    double[] payRate = new double[NUM_EMPLOYEES];
    double[] wages = new double[NUM_EMPLOYEES];

    // setHours method - will reassign the whole array of `hours` with the provided argument `time` ; I'm leaving this method with a signature that you have provided just to have a place to put my comment on it
    public void setHours(int[] time) {
        hours = time;
        // time = hours; // this is wrong - it would assign class field value to the temporary argument variable `time`, and then just throw it away (since `time` in this scope is temporary)
    }

    // setHours method - will set working hours in one of an array `hours` elements specified by the provided index - number of an employee it refers to
    public void setHours(int employeeNumber, int workedHours) {
        hours[employeeNumber] = workedHours;
    }

    // setPayRate method - same as above
    public void setPayRate(int employeeNumber, double payRate) {
        payRates[employeeNumber] = payRate;
    }

    // setWage method - same as above
    public void setWage(int employeeNumber, double wage) {
        wages[employeeNumber] = wage;
    }

    // getWage method - will return the wage for employee given by an index in array number
    public double getWage(int employeeNumber) {
        return wages[employeeNumber];
    }

    //getEmployeeID method - will return an ID of employee given by an index in array number
    public int getEmployeeID(int employeeNumber) {
        return employeeID[employeeNumber];
    }

    //getEmployeeIndexFromID method - will return the index of employee given by his ID number - this is inverse function of the function 'getEmployeeID'
    public int getEmployeeIndexFromID(int employeeID) {
        int index;
        // search implementation goes here
        // you should try to write it on your own
        return index;
    }
}

关于java - 如何创建一个带有数组的类,然后将值传递给程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180994/

相关文章:

java - 计算出混合字符的校验和

java - 有人可以帮我解决这个 JAVA SAXParser 吗?

java - 为什么垃圾收集器没有比个位数的堆空闲百分比更快地进行更积极的垃圾收集?

java - 如何在同一个方法中执行两个不同的 ResultSet 对象

java - Thymeleaf:从 Spring-MVC Controller 重定向时,thymeleaf 不反射(reflect)新值

java - MySQL 的 Tiny int 到 Java 中的 Integer

java - 在消费者监听之前发送消息时,消费者未从 MQ 接收消息

java - 使用数据库创建企业桌面应用程序的最佳实践

Java帮助(文件流)

java - 你如何从android中的照片中提取地理位置信息?