2016-07-05 74 views
-1

我試圖從文件導入數據並創建對象,然後將其存儲到數組中。我是初學者,我不確定我做錯了什麼。讀取文件,並基於數據讀取具有屬性的對象

我收到6個錯誤:

  1. \ Employees.java:92:錯誤:類,接口,或枚舉預期 } ^

  2. Employeetest.java:24:錯誤:找不到符號 objectArray [counter] = setFirstName(firstNameEmployee);

  3. 符號:方法setFirstName(字符串) 位置:類Employeetest Employeetest.java:26:錯誤:找不到符號 objectArray [計數器] = setLastName(lastNameEmployee);

  4. 符號:方法setLastName(字符串) 位置:類Employeetest Employeetest.java:28:錯誤:找不到符號 objectArray [計數器] = setAge(ageEmployee);

  5. 符號:方法setAge(雙) 位置:類Employeetest Employeetest.java:30:錯誤:找不到符號 objectArray [計數器] = setHourlySalary(hourlySalaryEmployee);

  6. 符號:方法setHourlySalary(雙) 位置:類Employeetest Employeetest.java:32:錯誤:找不到符號 objectArray [計數器] = setWeeklyHoursWorked(weeklyhoursworkedEmployee);

    符號:方法setWeeklyHoursWorked(雙) 位置:類Employeetest 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); 
} 
} 

無法識別的錯誤,任何引人注目的錯誤?

+0

每行之前有4個空格使其成爲代碼段。它使得代碼更容易閱讀 – DarkV1

+0

更重要的是,你會得到什麼錯誤? – DarkV1

+0

你的代碼並不完全清楚。你可以縮進它嗎? – aditya

回答

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); 

objectArray[counter].setAge(ageEmployee); 

以固定空指針異常

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

把該循環右側下

BufferedReader br = new BufferedReader(fr); 

的原因是因爲一個對象數組中的對象爲空在第一。因此,你需要實例化它們,然後你可以改變它們的實例變量。

+0

我看到謝謝,我仍然得到一個錯誤。 。\ Employees.java:92:error:class,interface,or enum expected } ^ 1 error –

+0

是我還是你的數組的大小爲1,因爲你的計數器= 0 – DarkV1

+0

哪條線是92? – DarkV1