2017-02-23 8 views
-1

給与ベースの従業員に関する特定の変数をtxtファイルから返却しようとしていますが、コードはコンパイルされますが、出力されません。ヌルポインタ例外の援助

public class PayrollPreparation { 

    private File source; 
    private Scanner input; 
    private String payrollType; 
    private int employeeID; 
    private String employeeName; 
    private int hoursWorked; 
    private double payRate; 
    private double straightPay; 

    public void printEmployeeData() { 
     System.out.println("Employee ID   Name  Hours Worked  Pay  Amount"); 

     try { 
      source = new File("Payroll.txt"); 
      input = new Scanner(source); 
      input.useDelimiter("[,\n]"); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 

     while (input.hasNext()) { 
      if (payrollType.equals("S")) { 
       employeeID = input.nextInt(); 
       employeeName = input.next(); 
       hoursWorked = input.nextInt(); 
       payRate = input.nextDouble(); 
       payrollType = input.next(); 
       straightPay = (hoursWorked * payRate); 

       System.out.println(" " + employeeID + "   " + employeeName 
         + "            " 
         + hoursWorked + "  " + straightPay); 

       input.nextLine(); 
      } 
     } 
     System.out.println("No More Salaried Employees."); 
    } 
} 

コードのすべてのコンパイルが、試験したとき、そこにifステートメントを使用してエラーであり、それはjava.lang.NullPointerException: null

+0

私はそれを示していませんが、私はすでに必要なパッケージをインポートしています:import java.util。*; import java.io.File; – Chris

+0

あなたのコンテンツをメモ帳で閲覧できますか? – FreedomPride

+2

どこでも初期化された 'payrollType'はありません。そしてあなたのコードでは常に 'null'です –

答えて

0

あなたの財産payrollTypeが初期化されることはありませんと言う: これは、私は現在、私のプロジェクトでやっていることです。

ヌルオブジェクトでequalsメソッドを呼び出すと、NullPointerExceptionという結果になります。

常に、定数(あなたの場合は文字S)をオブジェクトと比較するのがベストプラクティスです。

コードは "S" .equals(payrollType)にする必要があります。

関連する問題