У меня возникли проблемы с выполнением вашего описания, но, глядя на ваш код, я думаю о том, что может быть вашей проблемой.Во-первых, не связанное с вашей проблемой предложение по кодированию, у вас есть взаимоисключающие случаи (file.startsWith (...)), которые вы тестируете с помощью ifs, вы должны иметь другое, чтобы, когда один из тестов дал положительный результат, другие могли игнорироваться:
for (String file : fileName) {
String path = PATH + file + EXT;
for (int i = 0; i < arrayLength; i++) {
if (file.startsWith("u")) {
up[i] = ImageIO.read(new File(path));
} else if(file.startsWith("d")) {
down[i] = ImageIO.read(new File(path));
} else if (file.startsWith("l")) {
left[i] = ImageIO.read(new File(path));
} else if (file.startsWith("r")) {
right[i] = ImageIO.read(new File(path));
}
}
}
Что касается логики кода, я вижу одну потенциальную проблему в том, что индекс вашего массива, похоже, неправильно связан с файлом.На данный момент ваш код может быть переписан таким образом без изменения его эффектов:
for (String file : fileName) {
String path = PATH + file + EXT;
BufferedImage array = null;
if (file.startsWith("u")) {
array = up;
} else if(file.startsWith("d")) {
array = down;
} else if (file.startsWith("l")) {
array = left;
} else if (file.startsWith("r")) {
array = right;
}
for (int i = 0; i < arrayLength; i++) {
array[i] = ImageIO.read(new File(path));
}
}
Вы просто пишете новое буферизованное изображение с тем же путем ко всему массиву (или любой другой части, включенной в переменную "arrayLength"") на каждой итерации внешнего цикла.Из-за этого, если «file» каждый раз имеет один и тот же тип (то есть, начальные значения с одним и тем же значением), ваш массив будет содержать только последний элемент в массиве fileName.
Здесь я начну угадыватьваше намерениеЯ предполагаю, что каждая строка в fileName - это один путь, который должен быть следующим изображением в массиве анимации для этого конкретного направления, поэтому вам нужен отдельный индекс для каждого массива:
int upArrayIndex = 0, downArrayIndex = 0,
leftArrayIndex = 0, rightArrayIndex = 0;
for (String file : fileName) {
String path = PATH + file + EXT;
if (file.startsWith("u")) {
up[upArrayIndex++] = ImageIO.read(new File(path));
} else if(file.startsWith("d")) {
down[downArrayIndex++] = ImageIO.read(new File(path));
} else if (file.startsWith("l")) {
left[leftArrayIndex++] = ImageIO.read(new File(path));
} else if (file.startsWith("r")) {
right[rightArrayIndex++] = ImageIO.read(new File(path));
}
}
Iнадеюсь, что это правильный путь для вопроса, который вы задаете, или, по крайней мере, даст вам представление, с чего начать.