2013-10-01 3 views
-1

enter code here У меня есть личное булево exist=false;, это локальная переменная моего payrool classвозникают проблемы с ошибкой java.lang.NullPointerException, пожалуйста, помогите мне

Я также есть метод searchRecord(int payrollPeriod, int empNo)

public void searchRecord(int payrollPeriod, int empNo) 
    { 
     for(int x=0;x<100;x++) 
     { 
      if(trans[x].getPayrollPeriod() == payrollPeriod && trans[x].getEmpNo() == empNo) 
      { 
       payrollCounter=x; 
       exist=true; 
       break; 
      } 
     } 
    } 

Мои массив trans[] - тип Transaction (я использовал композицию) состоит из записи, которая имеет payrollPeriod и empNo.

Моя программа работает нормально, когда существуют файлы, но когда поиск приводит к ложным java.lang.NullPointerException происходит ...

пожалуйста, помогите мне, что я должен делать

ОШИБКА:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at payroll.Payroll.searchRecord(Payroll.java:350) 
at payroll.Payroll.actionPerformed(Payroll.java:184) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$200(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

ОПЕРАЦИОННЫЙ КЛАСС:

package payroll; 

public class Transaction extends Employee 
{ 
//local variable 
private int payrollPeriod; 
private double hoursWorked; 

//constructor 
public Transaction(int payrollPeriod, int empNo, String name, String department, double payRate, double hoursWorked) 
{ 
    super(empNo, name, department, payRate); 
    this.payrollPeriod=payrollPeriod; 
    this.hoursWorked=hoursWorked; 
} 

//methods 
public int getPayrollPeriod() 
{ 
    return payrollPeriod; 
} 
public double getHoursWorked() 
{ 
    return hoursWorked; 
} 
} 
+0

разместить код getPayrollPeriod() и getEmpNo() –

+1

Может NULLS в этом массиве? И почему жестко закодированный 100? 'trans.length' кажется более ремонтопригодным. – Thilo

+0

Покажите нам фактическое исключение. Является ли 'trans [x]' null или это что-то внутри методов? – John3136

ответ

1

Массив trans[x] содержит значения null.

Вы должны либо:

  1. Не допускать null значения в массиве при его построении.
  2. Проверьте на null значения в цикле и пропустите/обработайте их.

    public void searchRecord(int payrollPeriod, int empNo) { 
        for(int x = 0; x < trans.length; x++) { 
         if (trans[x] == null) { 
          System.out.println("Skipped null value in trans[x]"); 
          continue; 
         } 
    
         if (trans[x].getPayrollPeriod() == payrollPeriod && trans[x].getEmpNo() == empNo) { 
          payrollCounter = x; 
          exist = true; 
          break; 
         } 
        } 
    } 
    
+0

Спасибо, сэр !!! Ваш ответ спас наш пример: –

+0

Добро пожаловать;) – Bart

Смежные вопросы