Почему разделение не распознает трубы даже с "\\ |"? - PullRequest
0 голосов
/ 09 июня 2019

Мы пытаемся прочитать файл, а затем разделить по трубе. Код читает файл, но не распознает канал. Например, в строке файла указано «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. Вместо этого мы получаем исключение за пределами массива.

1 Ответ

0 голосов
/ 10 июня 2019

Я считаю, что расположение цикла foreach было ошибочным.Он пытался разбить одну и ту же строку, что в итоге привело к массиву, у которого не было индекса в 1.

...