Я пытаюсь упростить проект, над которым я работал, и ударил стену. Цель состоит в том, чтобы получить входной файл .txt и ввести его в массив на основе типов сотрудников. Затем возьмите эти данные и вычислите зарплату (расчеты, обработанные в других классах для каждого типа), и выведите информацию и среднюю зарплату за этот год. Мне говорят, что я помещаю только один тип (Executive) в массив в этом коде, но я не вижу в этом методе ничего другого, кроме остальных.Учимся работать с массивами в Java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.text.DecimalFormat;
public class Salaries{
public static void main(String[] args) throws FileNotFoundException{
final DecimalFormat Currency = new DecimalFormat("$0,000.00");
final DecimalFormat Percentage = new DecimalFormat("0.00%");
String fileName = "data1.txt";
Scanner fileScanner;
int count2014=0;
int count2015=0;
Employee [] data2014 = new Employee[10];
Employee [] data2015 = new Employee[10];
try{
fileScanner=new Scanner(new File(fileName));
while(fileScanner.hasNextLine()){
String nextEmployee = fileScanner.nextLine();
String[]data=(nextEmployee.split(" "));
Employee employee = null;
if (data[1].equals ("Employee")){
String name=data[2];
double salary=Double.parseDouble(data[3]);
if (data[0].equals("2014")){
employee=new Employee(name, salary);
employee=data2014[2];
count2014++;
}
else{
employee=new Employee(name,salary);
employee=data2015[2];
count2015++;
}
}
else if (data[1].equals ("OnCommission")){
String name=data[2];
double salary=Double.parseDouble(data[3]);
double commission=Double.parseDouble(data[4]);
double sales=Double.parseDouble(data[5]);
if (data[0].equals("2014")){
data2014[count2014]=new EmployeeOnCommission(name, salary, commission, sales);
count2014++;
}
else{
data2015[count2015]=new EmployeeOnCommission(name,salary, commission, sales);
count2015++;
}
}
else if (data[1].equals ("Executive")){
String name=data[2];
double salary=Double.parseDouble(data[3]);
double stock=Double.parseDouble(data[4]);
if (data[0].equals("2014")){
data2014[count2014]=new Executive(name, salary, stock);
count2014++;
}
else{
data2015[count2015]=new Executive(name, salary, stock);
count2015++;
}
}
}
}
catch (FileNotFoundException | NumberFormatException e){
System.out.println(e);
}
double avgOf2014=0;
//Results of the 2014 year employees data
System.out.println("Year - 2014 : ");
for(int i = 0; i < count2014; i++){
System.out.print(data2014[i].toString()+
" Annual Salary: " +data2014[i].annualSalary());
avgOf2014+=data2014[i].annualSalary();
}
//average of 2014 salaries
System.out.println("Average of 2014 salaries: "
+Currency.format(avgOf2014/(count2014)));
}}
Исполнительный фактически расширяет Employee. Я тоже могу опубликовать эти классы, если это поможет. Я старался не заставлять других работать для меня, просто назовите меня в правильном направлении. – dsmracr29
Спасибо! Этот совет работал отлично. Имеет смысл, почему я видел NullPointerExceptions. Я переписывал ссылки. – dsmracr29