Может кто-нибудь попытается запустить эту программу и помочь мне разобраться, почему она кажется действительно запутанной, потому что не только есть ошибка времени выполнения, но и проблема с ответом на подсказку. Я понятия не имею, что делать или что я сделал неправильно. У меня нет ошибок компиляции, только проблемы при запуске программы. В частности, ошибка времени выполнения. Любая помощь будет действительно оценена. Спасибо!Как сделать мою программу java правильно запущенной и исправить ошибку времени выполнения?
Сама программа должна подсказывать 10 сотрудников за их
last name
what time they started their work
(Время должно вводится час, затем минуту в военное время. Для напр., Если они начнут работу в 2:20 пользователем должен вводить 14 для часа и 20 для минуты).
what time they finished work
(также отформатировано как время начала).
Я предполагаю, что все данные введены правильно, что работник закончил работу после того, как они начали, и что оба раза за тот же день.
Программа определит, сколько часов каждый сотрудник работал в этот день.
Он будет выводить хорошо отформатированный отчет, содержащий список `
all of the employees
along with the amount of time they worked
(перечислены в часах и минутах),
также он должен выводить
the average amount of time worked
their last name
Это то, что я написал -
import java.util.Scanner;
public class EmployeeTime
{
public static void main(String[] args)
{
String[] empLastName={""};
int[] workStartTime={0}, workEndTime={0}, totalTimeWorked={0}, hoursWorked={0};
double[] avgHoursWorked={0};
String[] empLastNameArray= new String[10];
int[] workStartTimeArray= new int[10];
int[] workEndTimeArray= new int[10];
double[] avgHoursWorkedArray= new double[0];
readEmployeeData(empLastName, workStartTime, workEndTime);
determineHoursWorked(workStartTime, workEndTime, totalTimeWorked);
determineAverageHoursWorked(workStartTime, workEndTime, totalTimeWorked);
writeHeadings();
printEmployeeInformation(empLastName, workStartTime, workEndTime);
}
public static void readEmployeeData(String[] empLastName, int[] workStartTime, int[] workEndTime)
{
System.out.println("enter how many students you would like to get the information");
Scanner input = new Scanner(System.in);
for(int i=0; i<10; i++)
{
System.out.println("Please enter your last name.");
empLastName[i]=input.next();
System.out.println("Please enter your work start time.");
workStartTime[i]=input.nextInt();
System.out.println("Please enter your work end time.");
workEndTime[i]=input.nextInt();
}
}
public static int[] determineHoursWorked(int[] workStartTime, int[] workEndTime, int[] totalTimeWorked)
{
int[] hoursWorked= new int[10];
for(int i=0; i<hoursWorked.length; i++)
hoursWorked[i]= workEndTime[i]-workStartTime[i];
for(int i=0; i<hoursWorked.length; i++)
{
totalTimeWorked[0]=totalTimeWorked[0]+hoursWorked[i];
}
return hoursWorked;
}
public static double[] determineAverageHoursWorked(int[] workStartTime, int[] workEndTime, int[] totalTimeWorked)
{
double[] avgHoursWorked= new double[10];
for(int i=0; i<avgHoursWorked.length; i++)
avgHoursWorked[0]= ((totalTimeWorked[0])/10);
return avgHoursWorked;
}
public static void writeHeadings()
{
System.out.printf("%s%25s%13s%16s\n\n", "Employees", "Amount of time worked", "Average amount of time worked");
}
public static void printEmployeeInformation(String[] empLastName, int[] hoursWorked, int[] avgHoursWorked)
{
for(int i=0; i<empLastName.length; i++)
System.out.printf("%-20s%9d%13.2f%16.2f\n", empLastName[i], hoursWorked[i], avgHoursWorked[i]);
}
}
Может кто-то также объяснить, почему я зашел за этот вопрос? Я честно смущен, что случилось с тем, как я это сформулировал. – Rachel
Ну, это длинный вопрос, и, например, в вашем коде, вы задаетесь вопросом, почему он не работает, но у вас есть строки, которые выглядят как 'String [] empLastNameArray = new String [empLastNameArray.length];' Это проблема потому что как вы получаете длину этой переменной, как вы ее назначаете? –
Поскольку вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение ** конкретную проблему или ошибку ** и ** кратчайший необходимый код **, чтобы воспроизвести его в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). – Andreas