Java 不确定如何初始化这些变量

Java 不确定如何初始化这些变量,java,Java,我要写的代码是一个工资单程序,它收集用户的输入,然后输出工资单信息。我已经编写了程序,但我似乎无法理解为什么会出现错误“局部变量可能尚未初始化” import javax.swing.JOptionPane; public class Payroll { public static void main(String []args) { String name, rateStr, hoursStr, maritalStatus, deductionStr, numEmpStr;

我要写的代码是一个工资单程序,它收集用户的输入,然后输出工资单信息。我已经编写了程序,但我似乎无法理解为什么会出现错误“局部变量可能尚未初始化”

import javax.swing.JOptionPane;



public class Payroll 
{
public static void main(String []args)
{

    String name, rateStr, hoursStr, maritalStatus, deductionStr, numEmpStr;
    double numEmp, rateOfPay, hoursWorked, regularPay, overtimeHours,     overtimePay, insuranceRate, taxRate, grossPay, taxes, deduction, netPay;  


    final double taxRate1 = .0857;
    final double taxRate2 = .0756;
    final double taxRate3 = .0579;


    numEmpStr = JOptionPane.showInputDialog("How many employees do you have? ");
    numEmp = Double.parseDouble(numEmpStr);

    while(numEmp >0 )
    {

        //Input All User Info!
        name = JOptionPane.showInputDialog("Employee Name: ");

        rateStr = JOptionPane.showInputDialog("Rate of Pay: ");
        rateOfPay = Double.parseDouble(rateStr);

        hoursStr = JOptionPane.showInputDialog("Hours Worked: ");
        hoursWorked = Double.parseDouble(hoursStr);

        deductionStr = JOptionPane.showInputDialog("Number of Deductions (Enter 1 or 2): ");
        deduction = Double.parseDouble(deductionStr);

        maritalStatus = JOptionPane.showInputDialog("Marital Status (M - Married, S - Single): ");

        //if statement (if hoursWorked >40


        if(hoursWorked> 40)
        {
        overtimeHours = (hoursWorked - 40);
        overtimePay = (rateOfPay*1.5*overtimeHours);

        regularPay = (40*rateOfPay);

        grossPay = (regularPay + overtimePay);
        }
        else
        {
            grossPay = (rateOfPay*hoursWorked);
        }



        if(maritalStatus == "M" )
        {
            insuranceRate =  50;
        }
        else
        {
            insuranceRate = 75;
        }



        if(deduction>2)
        {
            taxRate = .0579;
        }
        else if(deduction==2)
        {
            taxRate = .0759;
        }
        else if(deduction==1)
        {
            taxRate = .0857;
        }
        else
        {

        }


        taxes = (grossPay*taxRate);
        netPay = (grossPay - (taxes + insuranceRate));


        JOptionPane.showMessageDialog(null, "Name: " + name +
                                            "\nRate of Pay: " + rateOfPay +
                                            "\nHours Worked: " + hoursWorked +
                                            "\nRegular Pay: " + regularPay +
                                            "\nOvertime Pay: " + overtimePay +
                                            "\nGross Pay: " + grossPay +
                                            "\nTax Rate: " + taxRate +
                                            "\nTaxes: " + taxes +
                                            "\nInsurance Status: " + maritalStatus + 
                                            "\nDeductions: " + insuranceRate +
                                            "\nNet Pay: " + netPay);


        --numEmp;
    }

    JOptionPane.showMessageDialog(null, "Your are finished with payroll for this period.");
}

}
像这样你可以初始化它们

您需要这样做,因为所有这些变量都会被使用,并且可能会在条件语句中分配一些值(在本例中为
if

这就是为什么当您尝试在
JOptionPane.showMessageDialog
中使用它们时,您会得到一个错误,即这些变量可能尚未初始化

像这样你可以初始化它们

您需要这样做,因为所有这些变量都会被使用,并且可能会在条件语句中分配一些值(在本例中为
if

这就是为什么当您尝试在
JOptionPane.showMessageDialog
中使用它们时,您会得到一个错误,即这些变量可能尚未初始化

像这样你可以初始化它们

您需要这样做,因为所有这些变量都会被使用,并且可能会在条件语句中分配一些值(在本例中为
if

这就是为什么当您尝试在
JOptionPane.showMessageDialog
中使用它们时,您会得到一个错误,即这些变量可能尚未初始化

像这样你可以初始化它们

您需要这样做,因为所有这些变量都会被使用,并且可能会在条件语句中分配一些值(在本例中为
if


这就是为什么当您尝试在
JOptionPane.showMessageDialog
中使用这些变量时,您会得到一个错误,即这些变量可能尚未初始化。

在该if语句中,如果
工时工作
不大于40,则可以跳过为overtimeHours、overtimePay和regularPay变量赋值代码结束后,您可以尝试使用
showMessageDialog
显示这些变量

    if(hoursWorked> 40)
    {
    overtimeHours = (hoursWorked - 40);
    overtimePay = (rateOfPay*1.5*overtimeHours);

    regularPay = (40*rateOfPay);

    grossPay = (regularPay + overtimePay);
    }
    else
    {
        grossPay = (rateOfPay*hoursWorked);
    }

你现在明白为什么它会给你这个警告了吗?在一个特定的代码路径上,你正试图打印出尚未初始化的变量的值。

在这个if语句中,如果
工作小时数
不大于40,则可以跳过为overtimeHours、overtimePay和regularPay变量赋值在代码末尾,您可以尝试使用
showmessage对话框
来显示这些变量

    if(hoursWorked> 40)
    {
    overtimeHours = (hoursWorked - 40);
    overtimePay = (rateOfPay*1.5*overtimeHours);

    regularPay = (40*rateOfPay);

    grossPay = (regularPay + overtimePay);
    }
    else
    {
        grossPay = (rateOfPay*hoursWorked);
    }

你现在明白为什么它会给你这个警告了吗?在一个特定的代码路径上,你正试图打印出尚未初始化的变量的值。

在这个if语句中,如果
工作小时数
不大于40,则可以跳过为overtimeHours、overtimePay和regularPay变量赋值在代码末尾,您可以尝试使用
showmessage对话框
来显示这些变量

    if(hoursWorked> 40)
    {
    overtimeHours = (hoursWorked - 40);
    overtimePay = (rateOfPay*1.5*overtimeHours);

    regularPay = (40*rateOfPay);

    grossPay = (regularPay + overtimePay);
    }
    else
    {
        grossPay = (rateOfPay*hoursWorked);
    }

你现在明白为什么它会给你这个警告了吗?在一个特定的代码路径上,你正试图打印出尚未初始化的变量的值。

在这个if语句中,如果
工作小时数
不大于40,则可以跳过为overtimeHours、overtimePay和regularPay变量赋值在代码末尾,您可以尝试使用
showmessage对话框
来显示这些变量

    if(hoursWorked> 40)
    {
    overtimeHours = (hoursWorked - 40);
    overtimePay = (rateOfPay*1.5*overtimeHours);

    regularPay = (40*rateOfPay);

    grossPay = (regularPay + overtimePay);
    }
    else
    {
        grossPay = (rateOfPay*hoursWorked);
    }

现在你明白为什么它会给你这个警告了吗?在某个代码路径上,你试图打印出尚未初始化的变量的值。

@flup在Java中,不初始化对象是编译错误。在这种情况下,所有字符串(name、rateStr、hourstr等)都会被删除需要初始化为
null
才能解决此错误。@flup在Java中,不初始化对象是编译错误。在这种情况下,所有字符串(名称、rateStr、hourstr等)都需要初始化为
null
才能解决此错误。@flup在Java中,不初始化对象是编译错误。在这种情况下,所有字符串(名称、rateStr、hoursStr等)需要初始化为
null
以解决错误。@flup在Java中,不初始化对象是编译错误。在这种情况下,所有字符串(名称、rateStr、hoursStr等)都需要初始化为
null
以解决错误。