Код не находит строку в текстовом файле.Что не так с моим кодом? - PullRequest
0 голосов
/ 02 августа 2011

Я пишу этот код, чтобы заглянуть в текстовый файл и найти мне строку, которую пользователь дал в качестве ввода. Мой текстовый файл содержит строки как таковые (эта информация будет важна позже):

первая строка - пусто. вторая строка - идан третья строка - йоси

теперь, если пользователь вводит "idan" в качестве пользователя (без ""), код найдет его. Если пользователь вводит "yosi", он не найдет его. Как будто мой код читает только вторую строку. Я новичок в программировании, и это просто практика для меня, чтобы научиться читать и писать в файлы, пожалуйста, будьте терпеливы со мной.

вот код (есть catch, а также оператор else, но они были остановлены по соображениям длины):

    //Search for the specific profile inside.
        try{        
            BufferedReader br = new BufferedReader(new FileReader("d:\\profile.txt"));
            System.out.println("Searching for your Profile...");


            int linecount = 0;
            String line;
            while (br.readLine() !=null){
                linecount++;

                if(userName.contentEquals(br.readLine())){
                    System.out.println("Found, " + userName + " profile!");
                    break;
                }
                else{

                }

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

Проблема в следующем месте:

if(userName.contentEquals(br.readLine()))

Вам не нужно читать его снова, потому что вы уже прочитали его в цикле while:

while (br.readLine() !=null)

Итак, вы в основном читаете строку 1 (ничего не делать с ней), затем читаете строку 2 (что-то делаете с ней), и процесс начинается заново.

2 голосов
/ 02 августа 2011

Проблема в следующем:

*if(userName.contentEquals(br.readLine())){* 

вы читаете дополнительную строку.Вы найдете, что он читает каждую другую строку с вашей реализацией.Это строка 2,4,6 и т. Д.

1 голос
/ 02 августа 2011

Вы хотите сделать что-то вроде ... Струнная линия; while ((line = br.readLine ())! = null) { ... }

Каждый вызов BufferedReader.readLine() читает следующую доступную строку из файла. Поскольку вы читаете одну строку в операторе while и читаете следующую строку для оператора if, вы проверяете только четные строки.

...