Ответ, как отмечали все, в значительной степени «вот как определяются блоки».
Есть несколько предложений, чтобы сделать код более красивым. См. ARM
try (FileReader in = makeReader(), FileWriter out = makeWriter()) {
// code using in and out
} catch(IOException e) {
// ...
}
Предполагается, что исправления также будут устранены.
with(FileReader in : makeReader()) with(FileWriter out : makeWriter()) {
// code using in and out
}
UPDATE: ARM реализована в Java 7. http://download.java.net/jdk7/docs/technotes/guides/language/try-with-resources.html
IMP[i] = Double.parseDouble(split[1])
Измените это на:
IMP[i] = Double.parseDouble(split[i+1])
вы получаете только второй элемент из массива IMP, равный 1,03.
РЕДАКТИРОВАТЬ
Заменить цикл while на:
int i = 0;
while(i < split.length){
IMP[i] = Double.parseDouble(split[i]);
i++;
}
double lastValue = IMP[i - 1];
while(i < years){
IMP[i] = lastValue;
i++;
}
Это должно помочь, если вы хотите повторить последнее значение для оставшейся части числа лет. Если у вас возникли какие-либо проблемы, попробуйте заменить Double.parseDouble(split[i])
на Double.parseDouble(split[i + 1])
или попытаться отладить и посмотреть, какие значения есть в каких переменных во время выполнения.