初めてのポスターはこちら。私は私のロープの終わりにいて、プログラミングのキャリアの追求をあきらめる準備ができています。プログラムを動作させることができなかったため、最後の課題を提出できませんでした。今、私は自分でいくつかの追加の練習をしています。配列を使用した単純な練習の割り当てで、最後の部分がわかりません。誰かが私がここで間違っていることを教えてもらえますか?実行するとデータを入力できますが、出力が表示される前にプログラムが終了し、次のエラーが発生します。
Exception in thread "main" java.lang.NullPointerException
at Payroll.getGrossPay(Payroll.java:47)
at PayrollCalc.main(PayrollCalc.java:32)
時間とpayRateを別々に表示できますが、grossPayを表示できません。コンストラクターにも満足していませんが、コンストラクターをどうするかはよくわかりません。この問題により、Payrollクラスの配列を初期化する必要がありました。
public class Payroll {
private final int NUM_EMPLOYEES = 3;
private int[] employeeId = {5658845, 4520125, 7895122}, empId, hours;
private double[] payRate, wages, grossPay;
public Payroll()
{
empId = employeeId;
}
public void setEmployeeId(int[] employeeId)
{
empId = employeeId;
}
public void setEmpHours(int[] empHoursIn)
{
hours = empHoursIn;
}
public void setEmpPayRate(double[] empPayRateIn)
{
payRate = empPayRateIn;
}
public int[] getEmployeeId()
{
return empId;
}
public int[] getEmpHours()
{
return hours;
}
public double[] getEmpPayRate()
{
return payRate;
}
public double[] getGrossPay()
{
for (int count = 0; count < NUM_EMPLOYEES; count++)
{
grossPay[count] = getEmpPayRate()[count] * getEmpHours()[count];
}
return grossPay;
}
}
java.util.Scannerをインポートします。
public class PayrollCalc
{
public static void main(String[] args)
{
int count;
final int NUM_EMPLOYEES = 3;
int[] empHours = new int[NUM_EMPLOYEES];
double[] empPayRate = new double[NUM_EMPLOYEES];
Scanner keyboard = new Scanner(System.in);
Payroll payroll = new Payroll();
for (count = 0; count < NUM_EMPLOYEES; count++)
{
System.out.print("Enter total hours for employee " +
payroll.getEmployeeId()[count] + ": ");
empHours[count] = keyboard.nextInt();
payroll.setEmpHours(empHours);
System.out.print("Enter pay rate for employee " +
payroll.getEmployeeId()[count] + ": ");
empPayRate[count] = keyboard.nextDouble();
payroll.setEmpPayRate(empPayRate);
}
System.out.println("\nEMPLOYEE ID\tGROSS PAY");
System.out.println("----------- ---------");
for (count = 0; count < NUM_EMPLOYEES; count++)
{
System.out.println(payroll.getEmployeeId()[count] + "\t\t" +
payroll.getGrossPay()[count]);
}
}
}
よろしくお願いします!
ステフ