薪水计算器

时间:2016-09-10 18:15:40

标签: java calculator

每当我插入输入时,它都会给我错误:

线程中的异常" main"显示java.lang.NullPointerException

在Calculate.calculatePay(Calculate.java:13)

at Hours.main(Hours.java:30)

为什么会出现这个错误,这是什么意思?

这是Hours.java:

import java.util.Scanner;

public class Hours {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        Calculate hours = new Calculate();
        Bills hours1 = new Bills();

        System.out.println("Enter your hours for this week: ");
        int Weekhours = input.nextInt();

        System.out.println("Enter the number of days you work this week: ");
        int Days = input.nextInt();
        int new_days = (Days - 1);

        System.out.println("Enter your hourly wage: ");
        double Wage = input.nextDouble();

        System.out.println("Did you work Sunday? <yes/no> ");
        String Didworksun = input.nextLine();

        System.out.println("How much money do you have saved already? ");
        int Money = input.nextInt();

        System.out.println("How much is your bills this month? ");
        int Monthpayment = input.nextInt();

        hours.calculatePay(Weekhours, Wage, Days, new_days);
        hours1.bills( Monthpayment, Money);
        hours.displayHours();

        System.out.println();

}

}

这是Calculate.java:

import java.util.Scanner;

public class Calculate {
public int Weekhours, Days, new_days;
public double pay, Wage, payment, weekpay, Sundaypay, premium;
public String Didworksun, Night;

Scanner input = new Scanner(System.in);

public double calculatePay( int Weekhours, double Wage, int Days, int new_days) {


    if (Didworksun.equals("y") || Didworksun.equals("Y") || Didworksun.equals("yes") || Didworksun.equals("Yes") || Didworksun.equals("YworkES") || Didworksun.equals("YeS") || Didworksun.equals("yEs") || Didworksun.equals("yeS") || Didworksun.equals("YEs")  || Didworksun.equals("yES")) {

        System.out.println("How many hours did you work on sunday? ");
        double Sundayhours = input.nextDouble();

        System.out.println("You worked " + (Sundayhours) + (" hours on Sunday."));

        double Sundaywage = (Wage * 1.5);
        double Sundaypay = (Sundayhours * Sundaywage);
        double new_hours = (Weekhours - Sundayhours);
        double weekpay = (new_hours * Wage);
        int Worksunday1 = 1;

        System.out.println("How much is night premium? ");
        double Premcash = input.nextDouble();

        double premium = (Premcash * (Days + Worksunday1));

        pay = Sundaypay + weekpay + premium;

        double taxes = .21;
        double tax_payment = pay * taxes;

        payment = (pay - tax_payment);


}else if (Didworksun.equals("n") || Didworksun.equals("N") || Didworksun.equals("no") || Didworksun.equals("No") || Didworksun.equals("NO") || Didworksun.equals("nO")) {
    System.out.println("You did not work Sunday.");

    int new_hours = Weekhours;
    double weekpay = (new_hours * Wage);


    System.out.println("How much is night premium? ");
    double Premcash = input.nextDouble();

    double premium = (Premcash * Days);

    double taxes = .21;
    double tax_payment = pay * taxes;
    pay = weekpay + premium;
    payment = (pay - tax_payment);

} else {
    System.out.println("Error: Invalid response. Try again");
        return calculatePay(Weekhours, Wage, Days, new_days);

}
    return payment;


}public void displayHours() {
    System.out.printf(" /nYour paycheck will be: %f", payment);
}

}

还有Bills.java

import java.util.Scanner;
public class Bills extends Calculate {

private int Money;
private int Monthpayment;
public void bills(int Monthpayment, int Money) {

Scanner input = new Scanner(System.in);

double until = (Monthpayment - (Money + payment) );

if (until <= 0) {

    System.out.println("You're able to make your payment");

} else {

    System.out.println("You need to save " + until + ( " more dollars to make your payment"));  

}   


}


}

1 个答案:

答案 0 :(得分:0)

计算中的

Didworksun永远不会被初始化。

if (Didworksun.equals("y") || Didworksun.equals("Y")

您必须先将Didworksun设置为某些内容才能使用它。