0

このコードを実行するとこのエラーが発生し続け、修正方法がわかりません。私は Java を始めて約 3 か月になりますが、助けが必要です。基本的に、プログラムはユーザーに各従業員の賃金率と勤務時間を入力するよう求めます。賃金率、勤務時間、従業員数はすべて、互いに同じインデックスを共有する配列です。ユーザーが従業員の賃金率と勤務時間を入力すると、プログラムはその従業員の総賃金を返します。このエラーがポップアップし続けることを除いて。助けてください!

Exception in thread "main" java.lang.NullPointerException
    at chapter.pkg7.lab.Payroll.setPayRate(Payroll.java:41)
    at chapter.pkg7.lab.Chapter7Lab.main(Chapter7Lab.java:45)
Java Result: 1

コードは次のとおりです。

package chapter.pkg7.lab;

import java.util.Scanner;

public class Chapter7Lab {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
 Payroll newEmployee = new Payroll();
       int[] employeeNum = newEmployee.getEmployeeID();
       double pay;
       int hour;

       for (int i = 0; i < employeeNum.length; i++)
       {
           System.out.println("Please enter the Pay Rate for Employee #" + employeeNum[i]);
           pay = keyboard.nextDouble();
           newEmployee.setPayRate(pay, i);

           System.out.println("Please enter the hours for Employee #" + employeeNum[i]);
           hour = keyboard.nextInt();
           newEmployee.setHours(hour, i);

           System.out.println("Gross pay is: " + newEmployee.getWages(i));
       }



package chapter.pkg7.lab;

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

    private int[] hours;
    private double[] payRate;
    private double wages;


   public double getWages(int index) {
      wages = hours[index] * payRate[index];
      return wages;
    }


   //Accessors and Mutators
    public int[] getEmployeeID() {
        return employeeID;
    }

    public void setEmployeeID(int[] employeeID) {
        this.employeeID = employeeID;
    }

    public int[] getHours() {
        return hours;
    }

    public void setHours(int hours, int index) {
        this.hours[index] = hours;
    }

    public double[] getPayRate() {
        return payRate;
    }

    public void setPayRate(double payRate, int index) {
        this.payRate[index] = payRate;
    }



}
4

3 に答える 3

2

payRate(and hoursand ) を配列として宣言しましwagesたが、これは初期化されていないインスタンス変数であるため、null.

それを初期化します。

private double[] payRate = new double[employeeID.length];

hours(およびについても同様wages)。

于 2013-11-14T22:11:03.393 に答える