мы можем выбрать / изменить, где метод readLine () начинает читать? - PullRequest
0 голосов
/ 05 ноября 2018

Я просмотрел все темы и, поскольку не смог найти подобную проблему, я хотел бы задать следующий вопрос:

с учетом образца кода:

try (BufferedReader helpRdr= new BufferedReader (new FileReader (helpfile))){

        do {
                                    //read characters until # is found
        ch= helpRdr.read();
                                    //now see if topics match
        if (ch=='#') {

            topic= helpRdr.readLine();
            if (what.compareTo(topic)==0) {                     //found topic

                do {

                    info=helpRdr.readLine();
                    if (info!=null) System.out.println (info);
                } while ((info!=null) && (info.compareTo("")!=0));

и пример файла содержимого:

"# если оператор if (условие); еще заявление; «

Вопрос:

почему метод readLine () в вышеприведенном примере не читает '#', вместо этого он имеет следующий вывод: if (condition) Statement; оператор else;

Спасибо за помощь заранее, ребята!

1 Ответ

0 голосов
/ 05 ноября 2018

Это происходит потому, что у вас уже есть прочитанный символ # и, следовательно, его больше нет, когда вы набираете read() или readLine().

Что вы можете сделать, это:

String ch = helpRdr.readLine();
if (ch.startsWith("#")) {
 // Do your stuff
}

Или это:

topic = ch + helpRdr.readLine();
...