Ошибка в коде, NullPointException - PullRequest
1 голос
/ 02 декабря 2011

Я работаю над программой для класса, которая должна быть сегодня в полночь, и я просто не могу понять, почему она дает мне эту ошибку исключения из нулевой точки.Я был бы очень признателен, если бы вы, ребята, посмотрели на мой код и помогли мне.

Цель проекта заключается в следующем ..

  • Заявление программы: НаписатьКласс заработной платы, который использует следующие массивы в качестве полей:

    • employeeId - массив из 7 целых чисел для хранения идентификаторов сотрудников.Поле массива должно быть инициализировано следующими числами:
      1. 5658845
      2. 4520125
      3. 7895122
      4. 8777541
      5. 8451277
      6. 1302850
      7. 7580489
    • часов - массив из семи целых чисел для хранения количества часов, отработанных каждым сотрудником
    • payRate - массивсемь двойных для хранения почасовой ставки каждого сотрудника.
    • заработная плата - Массив из семи двойных чисел для хранения валовой заработной платы каждого сотрудника.

    Класс должен связывать данные в каждом массиве через индексы,Например, число в элементе 0 массива часов должно быть количеством часов, отработанных сотрудником, чей идентификационный номер хранится в элементе 0 массива employeeId.Та же самая ставка заработной платы сотрудников должна храниться в элементе 0 массива payRate.В дополнение к соответствующим методам доступа и мутатора у класса должен быть метод, который принимает в качестве аргумента идентификационный номер сотрудника и возвращает валовую оплату за этого сотрудника.Продемонстрируйте класс в полной программе, которая отображает номер каждого сотрудника и просит пользователя ввести часы сотрудника и ставку оплаты.Затем должен отображаться идентификационный номер каждого сотрудника и общая заработная плата.

    • Проверка ввода: Не принимайте отрицательные значения для чисел и чисел менее 6,00 для ставки заработной платы.

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

Scanner kboard = new Scanner(System.in);

public ParrishPayroll(int[] ids){

    employeeId = new int[ids.length];
    // Copy the values in ids
    for (int index = 0; index < ids.length; index++)
        employeeId[index] = ids[index];

    System.out.println("Employee ID's");
    System.out.println(Arrays.toString(employeeId));

    System.out.println("Please enter the id number you would like to edit.");
        int input = kboard.nextInt();

        if(input == 5658845){
            int index = 0;
            setHours(index);
            }
        else if(input == 4520125){
            int index = 1;
            setHours(index);
            }
        else if(input == 7895122){
            int index = 2;
            setHours(index);
            }
        else if(input == 8777541){
            int index = 3;
            setHours(index);
            }
        else if(input == 8451277){
            int index = 4;
            setHours(index);
            }
        else if(input == 1302850){
            int index = 5;
            setHours(index);
            }
        else if(input == 7580489){
            int index = 6;
            setHours(index);
            }
        else {
            System.out.println("Invalid ID number!");

            }
}//end startSequence

public void setHours(int i){

    System.out.println("How many hours were worked?");
    hours[i] = kboard.nextInt();    
        if(hours[i] < 0){
            System.out.println("Please input a positive number.");
            kboard.nextInt(hours[i]);
            setPayRate(i);
        }
        else
            setPayRate(i);

}

public void setPayRate(int index){

    int input = index;

    System.out.println("What is the employee's pay rate?");
    payRate[input] = kboard.nextDouble();
        if(payRate[input] < 0){
            System.out.println("Please input a positive number.");
            payRate[input] = kboard.nextDouble();
            calcWages(input);
        }
        else if(payRate[index] < 6.00){
            System.out.println("Wages must be higher than $6.00.");
            payRate[input] = kboard.nextDouble();
            calcWages(input);
        }
}

public void calcWages(int index){

    int input = index;

    wages[input] = hours[input] * payRate[input];

}


public void getGross(int i){

    int input = i;

    if(input == 5658845){
        System.out.print("Employee number: " + input + " wages: " + wages[0]);
        }
    else if(input == 4520125){
        System.out.print("Employee number: " + input + " wages: " + wages[1]);
        }
    else if(input == 7895122){
        System.out.print("Employee number: " + input + " wages: " + wages[2]);
        }
    else if(input == 8777541){
        System.out.print("Employee number: " + input + " wages: " + wages[3]);
        }
    else if(input == 8451277){
        System.out.print("Employee number: " + input + " wages: " + wages[4]);
        }
    else if(input == 1302850){
        System.out.print("Employee number: " + input + " wages: " + wages[5]);
        }
    else if(input == 7580489){
        System.out.print("Employee number: " + input + " wages: " + wages[6]);
        }
    else {
        System.out.println("Invalid ID number!");
        getGross(input);
        }


   }


public static void main(String[] args){

    int[] idlist = {5658845, 4520125, 7895122, 8777541, 8451277, 1302850, 7580489};

    ParrishPayroll user1 = new ParrishPayroll(idlist);

    Scanner kboard = new Scanner(System.in);
    System.out.println("What employee would you like to see the gross wages for?");
    int i = kboard.nextInt();
    user1.getGross(i);    

}

1 Ответ

0 голосов
/ 02 декабря 2011

Похоже, вы не инициализируете переменные hours, payRate или wages, что означает, что все они равны нулю. Когда вы вызываете, скажем, hours[i] = kboard.nextInt(), он выдаст исключение NullPointerException, потому что вы не можете установить i -й элемент null.

Убедитесь, что у вас есть строка, подобная hours = new int[whatever], прежде чем пытаться использовать переменную hours (то же самое для двух других). Вы правильно поняли employeeId, так что следуйте этой схеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...