Программа компилируется нормально, но когда я запускаю его, я получаю сообщение об ошибке, в частности это: java.lang.ArrayIndexOutOfBoundsException
: 1«java.lang.ArrayIndexOutOfBoundsException: 1» Ошибка при запуске
Он получает ошибку на:
String name = array[1];
Я не уверен, почему.
Это код с проблемой:
infile = new Scanner(new FileReader("EmployeeData.TXT"));
while(infile.hasNext()){
String line = infile.nextLine();
String array[] = line.split(":");
String name = array[1];
String id = array[2];
double salary = Double.parseDouble(array[3]);
Employee e;
if (array[0].equals("s")){
e = new SalariedWorker(id, name, salary);}
else {
boolean overtime = Boolean.parseBoolean(array[4]);
if(overtime){
int maxhu = Integer.parseInt(array[5]);
e = new HourlyWorker(id, name, salary, maxhu);
}
else{
e = new HourlyWorker(id, name , salary);
}
}
company.add(e);
}
Для справки, это остальная часть программы:
Он читает этот текстовый файл под названием "EmployeeData.TXT":
S Washington,George 000001 125000
H MacDonald,Ronald 386218 7.80 true 40
H Walton,Samuel 268517 8.21 false
H Thomas,David 131313 9.45 true 38
H Sanders,HarlandDavid 277651 8.72 false
S Baron,James 368535 310236
Практически весь этот код не нужен. Прочитайте, как сделать [минимальные, полные, проверенные примеры] (http://stackoverflow.com/help/mcve). –
Обычно люди публикуют недостаточно кода ... – Grice
Проблема заключается в разборе строки. Вы используете знак ':'. Но у вас его нет в вашей линии. И массив имеет только 1 элемент. Не два. 'array [1]' - второй элемент массива. Он компилируется отлично, но во время выполнения он ломается. –