Итак, есть несколько вещей, которые я хотел бы обсудить с вами, и некоторые из них выходят за рамки ответа на эту конкретную проблему, с которой вы столкнулись.
Для начала давайте разберемся с проблемой.
Всякий раз, когда вы собираетесь распечатать массив сотрудников, вы делаете следующий код:
public static void printEmployeeArray(ScottEmployee2[]employees)
{
for(ScottEmployee2 i : employees){
ScottEmployee2.displayEmployee();
}
}
Есть несколько проблем с этим кодом. Во-первых, у вас нет места между ScottEmployee2 [] и сотрудниками. Затем вы вызываете displayEmployee () для класса ScottEMployee2, а не для объекта, который есть в вашем цикле for. Вот что вы должны сделать:
public static void printEmployeeArray(ScottEmployee2[]employees)
{
for(ScottEmployee2 i : employees){
i.displayEmployee();
}
Теперь, выходя за рамки этого быстрого исправления, я хочу поговорить с вами о некоторых ваших соглашениях по коду. Во-первых, этот цикл while должен быть выполнен для цикла for следующим образом:
for (i = 0; i < employees.length i ++){
if(!inputFile.hasNextLine()){
break;
}
String dummyNumber = inputFile.nextLine();
int theNumber = Integer.parseInt(dummyNumber);
String theName = inputFile.nextLine();
String theDepartment = inputFile.nextLine();
String thePosition = inputFile.nextLine();
String dummySalary = inputFile.nextLine();
double theSalary = Double.parseDouble(dummySalary);
String dummyRank = inputFile.nextLine();
int theRank = Integer.parseInt(dummyRank);
employees[index] = new ScottEmployee2(theNumber, theName, theDepartment, thePosition, theSalary, theRank);
index++;
}
Это просто потому, что это более стилистически уместно. Во-вторых, в вашем классе ScottEmployee у вас есть несколько статических методов, когда их не должно быть. То есть:
- displayEmployee ();
- checkBonus ();
- SetName (); // Вы не хотите, чтобы все сотрудники имели одинаковое имя, верно?
- GetName ();
Кроме того, почти все ваши поля в этом классе не должны быть статическими, поскольку им не нужно оставаться согласованными при каждом создании экземпляра класса. Это означает, что ваши поля должны выглядеть следующим образом:
private static int number;
private int rank;
private String name,department,position;
private double salary,percentage,modSalary;
Использование статического должно быть только в том случае, если у вас должна быть полевая работа во всех экземплярах класса. Наличие статического числа означает, что все, что вы установили при создании нового ScottEmployee2, будет тем же, что и для следующего, которое вы делаете, если вы его не измените.
Я искренне надеюсь, что все это поможет вам в ваших приключениях в области кодирования! Пелас, дай мне знать, могу ли я тебе чем-нибудь помочь!