для программы, которую я назначил, мы должны прочитать из текстового файла, создать ArrayList объектов с именем NameInformation, который содержит информацию из файла, а затем запросить у пользователя имя и пол (гендер является одной из переменных в классе NameInformation), и компьютер расскажет, сколько мальчиков или девочек получили данное имя.Попробуйте/поймать блоки в Java
Доступ к файлам и их использование за пределами блока catch try? Я хочу попробовать что-то вроде этого:
try {
FileReader inFile = new FileReader (FILE_NAME);
} catch (FileNotFoundException e) {
System.out.println ("The file " + FILE_NAME + " does not exist");
System.exit(-1);
}
Scanner file = new Scanner (infile);
ArrayList<NameInformation> nameList = new ArrayList<NameInformation>();
Я пробовал вышеуказанный код и получал сообщение об ошибке. Единственный способ, которым я мог заставить его работать, - сделать попытку массивной. Это единственный способ сделать это? Я чувствую, что массивный блок try неверен.
Я хочу добавить элементы в ArrayList тоже, но, похоже, не может быть прав.
while (file.hasNextLine()) {
NameInformation babyName = new NameInformation(file.nextLine());
nameList.add(babyName);
}
Но это не совсем то, что я хочу.
«Быстрое исправление» будет «FileReader inFile = null; try {infile = ....} catch (...) {...} Файл сканера = новый сканер (inFile); .... '. Переместите переменную 'inFile' за пределы блока' try/catch', чтобы увеличить ее область. Также обратите внимание на опечатку в 'new Scanner (infile)', вы ошибочно указали свою переменную. – Tom
Если блок try является «массивным», это просто означает, что у вас слишком много строк кода внутри блока. Рефактор для введения методов: 'try {List list = readInformationFrom (inFile); } ' –
@ Это быстрое исправление является уродливым. Он работает только потому, что блок catch вызывает System.exit(). Если это не так, быстрое исправление приведет к исключению NullPointerException. –