我一直在绞尽脑汁想要做研究,但我发现的并没有帮助我破解它。我在这一点上真的希望有人可以帮我指明一个明确的方向,或者告诉我到底我做错了什么和误会。我似乎无法理解和处理构造函数,以及新类实例的参数。请注意,我只是在学习,所以如果我使用了错误的条款,我会道歉。
public class CommissionCalculation
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in); // create scanner for user input from command window
Employee employee = new Employee(employee.name, employee.totalSales, employee.totalIncome); //create instance of employee class
我得到的具体错误是实例参数employee.name,其中显示“变量员工可能尚未初始化”。但是,employee.totalSales和employee.totalIncome没有此问题。
我正在尝试将这些参数传递到ArrayList
,如下所示。
ArrayList <Employee> employeeList = new ArrayList<>();//create arraylist of employee class
employeeList.add(new Employee(employee.name, employee.totalSales, employee.totalIncome));
类代码是
class Employee //creates new class
{
String name;
double totalSales;
double totalIncome;
public Employee(String Name, double TotalSales, double TotalIncome)
{
this.name = Name;
this.totalSales = TotalSales;
this.totalIncome = TotalIncome;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public double getTotalSales()
{
return totalSales;
}
public void setTotalSales(double totalSales)
{
this.totalSales = totalSales;
}
public double getTotalIncome()
{
return totalIncome;
}
public void setTotalIncome(double totalIncome)
{
this.totalIncome = totalIncome;
}
public String toString()
{
return "Name: "+ this.name + "\nTotal Annual Sales: "+ this.totalSales + "\nTotal Income Earned:" + this.totalIncome;
}
}
非常感谢所有帮助和建议!
答案 0 :(得分:2)
当您撰写Employee employee = new Employee(employee.name, employee.totalSales, employee.totalIncome)
时,employee.name
是您当前正在构建的员工的姓名。
你基本上说&#34;这个员工的名字应该是这个员工的名字&#34;,然后Java要求&#34;但是 这个员工的名字是什么? &#34;
如果你调用这样的构造函数,你必须使用具体值(或已经有值的变量)来调用它,例如Employee employee = new Employee("John Doe", "245", "1234.56")
如果您只想创建一个空员工,那么您必须拥有这样的构造函数:
public Employee() {
}
这将允许您稍后设置值。如果需要,还可以向其中的变量添加默认值。 您可以像这样调用构造函数:
Employee employee = new Employee();
顺便说一下,如果你根本没有定义任何构造函数,那么默认情况下会添加这个构造函数。 (在这种情况下,它被称为&#34;默认构造函数&#34;。)
答案 1 :(得分:0)
我认为你会找到employee.totalSales,而employee.totalIncome会遇到同样的问题:尝试用&#34; Fred&#34;替换employee.name并且您将看到语法错误移动到下一个参数。问题是传递给构造函数的值需要在调用构造函数之前有一个值。员工变量尚未初始化,因此他们没有值 - 这是编译器在语法错误中告诉您的。
答案 2 :(得分:0)
我得到的是实例参数employee.name,它说 “可变员工可能尚未初始化。”然而, employee.totalSales和employee.totalIncome没有这个 问题
如果提供有效参数,则其他两个参数也会出现编译时错误。
Demo.java:3: error: variable employee might not have been initialized
Employee employee = new Employee(null, employee.totalSales, employee.totalIncome);
^
Demo.java:3: error: variable employee might not have been initialized
Employee employee = new Employee(null, 0, employee.totalIncome);
^
正如@Jake所建议的那样,有一个默认构造函数并初始化员工字段。