0

オブジェクトの配列内の配列に値を入力する必要があります。これは、ユーザーが値を入力できるようにするメソッドです

public static double addRecord(Employee[] employee) {
    Scanner in=new Scanner (System.in);
    for(int i=0; i<employee.length;i++) {
        employee[i]=new Employee();
        System.out.println("Enter the employee's ID and then name (ex: 1587 Ahmad Ashaikh):");
        employee[i].setID(in.nextInt());
        employee[i].setfName(in.next());
        employee[i].setlName(in.next());

        System.out.println("Enter the employee’s (1) BP (2) HA (3) TA (example: 4000 500 300): ");
        for(int j=0; j<3;j++) {
            employee[i].setSalary(in.nextInt(),j);
        }
        break;
    }
    return 0;
}

それが値を含むクラスです

public class Employee {

    private String fname;
    private String lname;
    private int ID;
    private int[] salary;
    private double netSalary;
    private char taxable;

    public Employee() {
        fname="unknown";
        lname="unknown";
        ID=0;
        salary=new int[0];
        netSalary=0;
        taxable='U';
    }

    public String getfName() {
        return fname;
    }

    public String getlName() {
        return lname;
    }

    public int getID() {
        return ID;
    }

    public int getSalary(int index) {
        return salary[index];
    }

    public double getNetSalary() {
        return netSalary;
    }

    public char getTaxable() {
        return taxable;
    }

    public void setfName(String fname) {
        this.fname=fname;
    }

    public void setlName(String lname) {
        this.lname=lname;
    }

    public void setID(int ID) {
        this.ID=ID;
    }

    public void setSalary(int salary,int index) {
        this.salary[index]=salary;
    }

    public void setNetSalary(double netSalary) {
        this.netSalary=netSalary;
    }

    public void setTaxable(char taxable) {
        this.taxable=taxable;
    }
}

給与の値を入力したいのですが、エラー メッセージが表示され続けます。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at dd1318398p2.Employee.setSalary(Employee.java:55)
    at dd1318398p2.EmpRecord.addRecord(EmpRecord.java:72)
    at dd1318398p2.EmpRecord.main(EmpRecord.java:36)
Java Result: 1

私の英語が下手で申し訳ありません..それは私の母国語ではありません

4

2 に答える 2

2

これにより、要素のない配列が作成されます-かなり役に立ちません。

salary=new int[0];

正しい番号がわからない場合は、List<Integer>別の方法を使用してください (例)

salary=new int[3];
于 2014-07-13T14:12:42.803 に答える
0

給与配列の容量をゼロのままにしています。以下のステートメントは問題を引き起こしています-: salary=new int[0];

于 2014-07-13T14:34:54.323 に答える