У меня возникли проблемы с получением моего кода для суммирования всех зарплат текстового файла. Предполагается, что они будут суммировать их всех, а также дать мне среднюю зарплату. Также у меня возникают проблемы с получением правильной форматирования одной из строк на выходе. Пожалуйста, помогите, я все еще очень новичок в программировании! Вот моя главная.printf и чтение текстового файла
import java.util.*;
import java.io.*;
public class fileIn
{
public static void main(String[] args)
{
String fName;
String lName;
String rank;
double salary = 0;
double newSal = 0;
Scanner inFile = null;
Employee[] emp = new Employee[20];
int numEmployee = 0;
// open the file
try
{
inFile = new Scanner(new File("employee.txt"));
} catch (FileNotFoundException e)
{
System.err.println("Error: File employee.txt not found ");
}
while (inFile.hasNext())
{
fName = inFile.next();
lName = inFile.next();
rank = inFile.next();
newSal = inFile.nextDouble();
salary += newSal;
emp[numEmployee] = new Employee(fName, lName, rank, salary);
numEmployee++;
}
System.out.println("Acme Corporation \n");
System.out.printf("Number Of Employees: %5d ", numEmployee);
System.out.printf("\nAverage Salary: %13.2f", salary/numEmployee);
System.out.printf("\nAnnual Total %16.2f", salary);
System.out.printf("\n\n%-8s %15s %10s", "Name", "Rank", "Salary\n");
for (int i = 0; i < numEmployee; i++)
{
System.out.printf("%s, %s \t%7s %11.2f\n", emp[i].getlName(),
emp[i].getfName(), emp[i].getRank(), emp[i].getSalary());
}
inFile.close();
}
}
и вот пример вывода:
Acme Corporation
Number Of Employees: 9
Average Salary: 58740.50
Annual Total 528664.54
Name Rank Salary
------------------ ---- ---------
Jones, William B2 42500.00
Baker, Susan A3 107500.00
Caine, Horatio A1 191268.95
Baer, Teddy B4 244268.95
Gator, Allie A2 292268.95
Mander, Sally A1 354392.84
Aspargus, Amy A1 454442.84
Huckleberry, Henry B1 495677.34
Rutabaga, Ryan B2 528664.54
Средняя заработная плата и общий годовой совершенно неправильно, общее должно быть более 2 миллионов, а средняя зарплата должна быть примерно 300k. СПАСИБО!!
Как выглядит файл, который вы читаете? сканеры 'next()' читают целые строки, что может быть не так, как вы хотите – Felk
Текстовый файл выглядит так же, как и вывод, только не отформатированный. Между именами, рангом и зарплатой есть пробелы. –
Тогда весь файл - 1 строка, и данные просто разделяются пробелами? Затем вам нужно будет прочитать весь файл в строке и получить доступ к частям, разделив его на массив в пространствах: 'String [] parts = string.split (" ");' – Felk