Изначально я пыталась реализовать решение так, как показано ниже. Но решение не проходило (после введения строки "helicopter" поток почему-то не закрывался, а ждал введения второй строки). Почему?
P. S. В итоге я решила создать в статическом поле reset переменные String line (для вводимых строк) и int number (для количества пассажиров) и решала с их помощью.
public class Solution {
public static void main(String[] args) {
}
static {
reset();
}
public static CanFly result;
public static void reset() {
try {
// сначала создаём поток чтения
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// а вот здесь я пытаюсь определить result в зависимости от введённой строки
if (reader.readLine().equals("plane")) {
result = new Plane(Integer.parseInt(reader.readLine()));
reader.close();
} else if (reader.readLine().equals("helicopter")) {
result = new Helicopter();
reader.close();
}
} catch (IOException e) {
}
}
}