数组/方法中没有任何内容无法正常运行

时间:2017-11-07 19:58:20

标签: java arrays methods

目的:"使用以下数组作为字段编写工资单类:             employeeID:包含员工标识号的七个整数数组。阵列应该是                         用以下数字初始化:568845,4520125,7895122,8777541,8451277,1302850,                         7580489             hours:一组七个整数,用于保存每位员工的工作小时数。             payRate:七个双倍的数组,用于保存每位员工的小时工资率             工资:一组七个双打来保存每个员工的工资总额。             该类应该通过subscipts关联每个数组中的数据。该类应该有一个方法             接受员工的身份证号码作为参数并返还总薪酬             。雇员"

使用Grosspay方法设置/获取方法:

public class Payroll{
   private int [] employeeID ={5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};
   private int [] hours = new int [7];
   private double [] wages = new double [7];
   private double [] payRate = new double [7];


   public void setEmployeeID(int a, int emp){
      employeeID[a] = emp;
   }
   public void setHours(int a, int hr){
      hours[a] = hr;
   }
   public void setWages(int a, int wgs){
      wages[a] = wgs;
   }
   public void setPayrate(int a, int prt){
      payRate[a] = prt;
   }
   public int getEmployeeID(int a){
      return employeeID[a];
   } 
   public int getHours(int a){
      return hours[a];
   }
   public double getWages(int a){
      return wages[a];
   }
   public double getPayrate(int a){
      return payRate[a];
   }
   public void Grosspay(){
      for(int a = 0; a < 7; a++){
         wages[a] = hours[a] * payRate[a];

      }

   } 
}

执行所有操作的地方:

import java.util.Scanner;
public class TestPayroll{
   public static void main(String [] args){
      Scanner in = new Scanner(System.in);
      Payroll pr = new Payroll();
      int hr;
      double prt;

      for (int a = 0; a < 7; a++){
         System.out.println("Enter in the hours worked by employee " + pr.getEmployeeID(a));
         hr = in.nextInt();
         pr.setHours(a,hr);
         while(hr < 0){
            System.out.println("Enter in a number greater than 0");
            hr = in.nextInt();
            pr.setHours(a,hr);
         }
         System.out.println("Enter in the pay rate for employee " + pr.getEmployeeID(a));
         prt = in.nextDouble();
         while(prt < 6.00){
            System.out.println("Enter in a payrate greater than 6.00");
            prt = in.nextDouble();
         }

      }
      pr.Grosspay();
      for(int a = 0; a < 7; a++){
         System.out.println("Employee " + pr.getEmployeeID(a) + " has a gross pay of " + pr.getWages(a));
      }


   }

我运行程序,一切正常,除非它打印出工资。而不是工资是小时[a] * payRate [a]的结果,它打印出0.0。我认为Grosspay方法可能不会像我认为的那样运作。或者可能是我设置了工资[a] = wgs但是代码中没有使用wgs,因此没有任何内容存储在工资数组中。那么我的代码有什么问题,正在打印0.0?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

试试这个

<强> Payroll.class

private int [] employeeID ={5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};
private int [] hours = new int [7];
private double [] wages = new double [7];
private double [] payRate = new double [7];


public void setEmployeeID(int a, int emp){
    employeeID[a] = emp;
}
public void setHours(int a, int hr){
    hours[a] = hr;
}
public void setWages(int a, int wgs){
    wages[a] = wgs;
}
public void setPayrate(int a, double prt){
    payRate[a] = prt;
}
public int getEmployeeID(int a){
   return employeeID[a];
}
public int getHours(int a){
   return hours[a];
}
public double getWages(int a){
   return wages[a];
}
public double getPayrate(int a){
    return payRate[a];
}
public void Grosspay(){
    for(int a = 0; a < 7; a++){
        wages[a] = hours[a] * payRate[a];
    }
}

Main.class

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    Payroll pr = new Payroll();
    int hr,wgs = 0;
    double prt;

    for (int a = 0; a < 7; a++){
        System.out.println("Enter in the hours worked by employee " + pr.getEmployeeID(a));
        hr = 1;
        pr.setHours(a,hr);
        while(wgs <= 0){
            System.out.println("Enter in a number greater than 0");
            wgs = 1;
            pr.setWages(a,wgs);
        }
        System.out.println("Enter in the pay rate for employee " + pr.getEmployeeID(a));
        prt = 1;
        while(prt < 6.00){
            System.out.println("Enter in a payrate greater than 6.00");
            prt = 7;
            pr.setPayrate(a,prt);
        }

    }
    pr.Grosspay();
    for(int a = 0; a < 7; a++){
        System.out.println("Employee " + pr.getEmployeeID(a) + " has a gross pay of " + pr.getWages(a));
    }
}