Java 读取文件,并基于读取的数据实例化具有属性的对象

Java 读取文件,并基于读取的数据实例化具有属性的对象,java,Java,我试图从文件中导入数据,并从中创建对象,然后将其存储到数组中。我是一个初学者,我不知道我做错了什么 我收到6个错误: .\Employees.java:92:错误:应为类、接口或枚举 } ^ java:24:错误:找不到符号 objectArray[counter]=setFirstName(firstNameEmployee) 符号:方法setFirstName(字符串) 地点:班级雇员考试 java:26:错误:找不到符号 objectArray[counter]=setLastName(l

我试图从文件中导入数据,并从中创建对象,然后将其存储到数组中。我是一个初学者,我不知道我做错了什么

我收到6个错误:

  • .\Employees.java:92:错误:应为类、接口或枚举 } ^

  • java:24:错误:找不到符号 objectArray[counter]=setFirstName(firstNameEmployee)

  • 符号:方法setFirstName(字符串) 地点:班级雇员考试 java:26:错误:找不到符号 objectArray[counter]=setLastName(lastNameEmployee)

  • 符号:方法setLastName(字符串) 地点:班级雇员考试 java:28:错误:找不到符号 objectArray[计数器]=设置(AGEMPLOYEE)

  • 符号:方法设置(双精度) 地点:班级雇员考试 java:30:错误:找不到符号 objectArray[counter]=setHourlySalary(HourlySalayEmployee)

  • 符号:方法setHourlySalary(双精度) 地点:班级雇员考试 java:32:错误:找不到符号 objectArray[counter]=setWeeklyHoursWorked(weeklyhoursworkedEmployee)

    符号:方法setWeeklyHoursWorked(双精度) 地点:班级雇员考试 6个错误

  • 这就是我所拥有的

        This is my objects class 
        public class Employees {
    
        private String firstName;
        private String lastName;    
        private double age;
        private double hourlySalary;
        private double weeklyhoursworked;
        private double weeklysalary;
    
        public void setFirstName(String EmployeeFirstName) {
            firstName = EmployeeFirstName;
            return;
        } 
        public void setLastName(String EmployeeLastName){
            lastName = EmployeeLastName;
            return;
       }
       public void setAge(double EmployeeAge){
            age = EmployeeAge;
            return;
       }
        public void setHourlySalary(double EmployeeHourlySalay){
            hourlySalary = EmployeeHourlySalay;
            calculateWeeklySalary(weeklyhoursworked);
            return;
        }
        public void setWeeklyHoursWorked(double EmployeeWeeklyHoursWorked){
            weeklyhoursworked = EmployeeWeeklyHoursWorked;
            return;
        }
        public String getFirstName(){
            return firstName;
        }
        public String getLastName(){
            return lastName;
        }
        public double getAge(){
            return age;
        }
        public double getHourlySalary(){
            return hourlySalary;
        }
        public double getWeeklyHourlyWorked(){
            return weeklyhoursworked;
       }
        public double getWeeklySalary(){
            return weeklysalary;
        }
        public void calculateWeeklySalary(double hoursWorked) {
        weeklysalary = (hoursWorked * hourlySalary);
        return;
        }
        }
    
    这是我的主程序,我尝试导入数据,将其转换为对象,然后将其存储为数组

    import java.io.*;
    
    public class Employeetest
    {
    
    
    public static void main(String[] args) throws Exception
    {
    
    String firstNameEmployee = "null";
    String lastNameEmployee = "null";   
    double ageEmployee;
    double hourlySalaryEmployee;
    double weeklyhoursworkedEmployee;
    double weeklySalaryEarnedEmployee;
    int counter = 0;
    
    Employees objectArray[] = new Employees[counter + 1]; 
    FileReader fr = new FileReader("Employeedata.txt");
    BufferedReader br = new BufferedReader(fr);
    
    counter = 0;
    while ((firstNameEmployee = br.readLine()) != null) {
        objectArray[counter] = setFirstName(firstNameEmployee);
        lastNameEmployee = br.readLine();
        objectArray[counter] = setLastName(lastNameEmployee);
        ageEmployee = Double.parseDouble(br.readLine());
        objectArray[counter] = setAge(ageEmployee);
        hourlySalaryEmployee = Double.parseDouble(br.readLine());
        objectArray[counter] = setHourlySalary(hourlySalaryEmployee);
        weeklyhoursworkedEmployee = Double.parseDouble(br.readLine());
        objectArray[counter] = setWeeklyHoursWorked(weeklyhoursworkedEmployee);
        System.out.println(objectArray[counter]);
    counter++;
    }
        br.close();     
        System.exit(0);
    }
    }
    
    无法识别的错误,是否有明显的问题?

    问题

    您正在调用未先访问对象就无法访问的方法

    继续:

    while ((firstNameEmployee = br.readLine()) != null) {
        objectArray[counter] = setFirstName(firstNameEmployee);
        lastNameEmployee = br.readLine();
        objectArray[counter] = setLastName(lastNameEmployee);
        ageEmployee = Double.parseDouble(br.readLine());
        objectArray[counter] = setAge(ageEmployee);
        hourlySalaryEmployee = Double.parseDouble(br.readLine());
        objectArray[counter] = setHourlySalary(hourlySalaryEmployee);
        weeklyhoursworkedEmployee = Double.parseDouble(br.readLine());
        objectArray[counter] = setWeeklyHoursWorked(weeklyhoursworkedEmployee);
        System.out.println(objectArray[counter]);
    counter++;
    }
    
    我们来看看这个代码块。 首先,从文件中读取一个值并将其分配给变量。然后,将其指定给对象。。。这就是问题的症结所在

    这就是你所拥有的

    objectArray[counter] = setLastName(lastNameEmployee);
    
    要修复此问题,只需将具有上述方法的所有行更改为

    objectArray[counter].setLastName(lastNameEmployee);
    
    另一个例子

    而不是

     objectArray[counter] = setAge(ageEmployee);
    

    修复空指针异常

    for(int x =0; x< objectArray.length;x++)
    {
        objectArray[x] = new Employees();
    }
    

    原因是对象数组中的对象一开始是空的。因此,您需要先实例化它们,然后才能改变它们的实例变量。

    每行前面有4个空格,以便将其变成一个代码段。它使代码更易于阅读更重要的是,您会遇到哪些错误?您的代码一点也不清楚。你可以缩进它。这是我得到的错误,我会编辑这篇文章,使我的代码更清楚。java:83:error:class、interface或enum应为}^1 error转到Employeetest.java的第83行,您将发现问题。你还没有给我们看那一段代码。这个错误远非“无法识别”。我明白了,谢谢,我仍然有一个错误\Employees.java:92:error:class、interface或enum应为}^1 error是我还是数组的大小为1,因为计数器为=0哪一行是92?很抱歉,我没有看到对象类中有一个额外的括号。知道是什么导致了这个错误吗?Employeetest.main(Employeetest.java:24)处线程“main”java.lang.NullPointerException中的异常哪一行是第24行
    for(int x =0; x< objectArray.length;x++)
    {
        objectArray[x] = new Employees();
    }
    
    BufferedReader br = new BufferedReader(fr);