Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类实例变量和构造函数的java问题_Java_Arraylist_Parameters_Constructor_Instance - Fatal编程技术网

类实例变量和构造函数的java问题

类实例变量和构造函数的java问题,java,arraylist,parameters,constructor,instance,Java,Arraylist,Parameters,Constructor,Instance,我一直在为此绞尽脑汁,并试图进行研究,但我的发现并没有帮助我破解它。我现在真的希望有人能帮我指出一个明确的方向,或者告诉我我到底做错了什么,误解了什么。我似乎很难理解和处理一个类的新实例的构造函数和参数。请注意,我只是在学习,因此,如果我可能使用了错误的术语,我深表歉意 public class CommissionCalculation { public static void main(String[] args) { Scanner input = ne

我一直在为此绞尽脑汁,并试图进行研究,但我的发现并没有帮助我破解它。我现在真的希望有人能帮我指出一个明确的方向,或者告诉我我到底做错了什么,误解了什么。我似乎很难理解和处理一个类的新实例的构造函数和参数。请注意,我只是在学习,因此,如果我可能使用了错误的术语,我深表歉意

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可能尚未初始化”。但是,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));

非常感谢所有的帮助和建议

我想您会发现employee.totalSales和employee.totalIncome都有相同的问题:尝试用“Fred”替换employee.name,您会看到语法错误移到下一个参数。问题是,在调用构造函数之前,传递给构造函数的值需要有一个值。employee变量尚未初始化,因此它们没有值-这是编译器在语法错误中告诉您的。

当您编写
employee employee=new employee(employee.name,employee.totalSales,employee.totalIncome)
时,
employee.name
是您当前正在构建的员工的姓名

基本上说“这个雇员的名字应该是这个雇员的名字”,然后Java问“但是这个雇员的名字是什么?”

如果你这样调用构造函数,你必须用一个具体的值(或者已经有值的变量)来调用它,例如
Employee-Employee=new-Employee(“John-Doe”,“245”,“1234.56”)

如果您只想创建一个空的employee,则必须有如下构造函数:

public Employee() {
}
Employee employee = new Employee();
这将允许您稍后设置值。如果愿意,还可以向其中的变量添加默认值。 您可以这样调用构造函数:

public Employee() {
}
Employee employee = new Employee();
顺便说一下,如果您根本没有定义任何构造函数,那么默认情况下会添加这个构造函数。(在这种情况下,它被称为“默认构造函数”。)

我得到的是实例参数employee.name,它表示 “变量employee可能尚未初始化。”但是, 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所建议的,使用默认构造函数并初始化employee字段。

我认为您会找到employee.totalSales和employee.totalIncome都有相同的问题:尝试将employee.name替换为“Fred”,您将看到语法错误移到下一个参数。