Проблемы со сканером Android - PullRequest
       40

Проблемы со сканером Android

0 голосов
/ 27 января 2011

Хорошо, на днях у меня возникли проблемы с FileWriter, отметившим новую строку, но я получил некоторую помощь с этим и решил.Теперь, как и раньше, я добавил свой старый код (прекрасно работает в старой программе), чтобы прочитать записанный файл.Я использую "|"в качестве разделителя (cs.useDelimiter ("|");).Когда я вызываю кусочки .next (), он передает только следующий символ, а не следующую строку до разделителя.Что мне не хватает?Фрагмент кода:

try{
    mFile = new Scanner(newFile(loadPath));
    while(mFile.hasNextLine()){
        String input = mFile.nextLine();
        Scanner pieces = new Scanner(input);
        pieces.useDelimiter("|");
        while(pieces.hasNext()){
            int row = Integer.valueOf(pieces.next());
            int col = Integer.valueOf(pieces.next());
            String pullPath = pieces.next();
            ......

}}

1 Ответ

0 голосов
/ 27 января 2011

Строка, которую вы передаете useDelimiter , интерпретируется как регулярное выражение.| - это специальный символ в регулярных выражениях, поэтому его необходимо экранировать обратной косой чертой.И саму обратную косую черту нужно экранировать, чтобы обойти Java-компилятор.Поэтому изменение этой строки следующим образом должно помочь:

    pieces.useDelimiter("\\|");

Также обратите внимание, что строка, возвращаемая pieces.next(), включает разделитель.Я подозреваю, что эти строки:

        int row = Integer.valueOf(pieces.next());
        int col = Integer.valueOf(pieces.next());

могут быть заменены на:

        int row = pieces.nextInt();
        int col = pieces.nextInt();

Вам также может понадобиться настроить pullPath для обрезки разделителя (ей).1016 * Надеюсь, это поможет.

...