public static int getBoys(ArrayList<String> boysNames, Scanner s) throws IOException {
// Getting boys file location
System.out.println("Please enter the file name containing the the boys names.");
String boyFileLocation = s.nextLine();
// Opening the file containing the names of boys
File boyFile = new File(boyFileLocation);
Scanner BF = new Scanner(boyFile);
int initialBoyCount = 0;
int i = 0;
boysNames.add(BF.nextLine());
while (BF.hasNextLine()) {
if (BF.nextLine().equals(boysNames.get(i))) {
} else {
boysNames.add(BF.nextLine());
initialBoyCount++;
i++;
System.out.println(boysNames.get(i));
}
}
return (initialBoyCount);
}
Я пытаюсь прочитать из файла список имен и добавить их в список массивов. Однако есть дубликаты определенных имен, и я только поддерживаю, чтобы сохранить уникальные (если, если они уже существуют, не добавляйте их снова). Однако я понял, что это только дает мне все другие названия. Начиная с 2 и давая мне следующие ошибки.Почему мой метод не читается в каждом значении из файла?
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at namesList.namesList.getBoys(namesList.java:53)
at namesList.namesList.main(namesList.java:27)
Я понимаю, о чем вы говорите. Так есть ли способ ссылаться на то, что находится в файле дважды, не перемещая маркер? –
@ M.Pestonit решение: вы должны вызывать 'hasNextLine()' и 'BF.nextLine()' только один раз. Я только что изменил свой ответ с решением, каким оно должно быть. –
@Andriy попробуйте поставить 'String currentLine = BF.nextLine()' в качестве первой строки в вашем цикле while. Затем укажите 'currentLine' вместо' BF.nextLine() '. – GreenGiant