Мы пытаемся прочитать файл, а затем разделить по трубе. Код читает файл, но не распознает канал. Например, в строке файла указано «Cola | 0», и после разбиения на массив мы получаем исключение «вне границ» для массива [1]. Это должно определенно существовать, если линия была правильно разделена.
Когда у нас был if (line.contains "\ |"), он возвращал true каждый раз, даже если в строках были каналы. Мы попытались использовать nextInt для нашего while вместо nextLine, но он сразу же возвратил false и завершил некоторое время (чего не следовало делать, потому что определенно есть числа).
Мы также пытались использовать подстроку с indexOf ("\ |") + 1 до конца, и она все еще не работала. Почему не ловит трубу?
try (Scanner fileScanner = new Scanner(file)) {
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
if (!line.contains("$")) {
for (String item : productsSold.keySet()) {
String[] productDetails = line.split("\\|");
productsSold.put(item, Integer.parseInt(productDetails[1]));
Cola | 0 должна создать вторую строку массива 0. Вместо этого мы получаем исключение за пределами массива.