Przeszukałem wszystkie tematy i ponieważ nie znalazłem podobnego problemu, chciałbym zadać następujące pytanie:

Biorąc pod uwagę przykładowy kod:

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));

Oraz przykładową zawartość pliku:

"#if if (warunek) instrukcja; instrukcja else; "

Pytanie brzmi:

Dlaczego metoda readLine() w powyższym przykładzie nie odczytuje '#', zamiast tego ma następującą instrukcję output:if (warunek); oświadczenie w przeciwnym razie;

Z góry dziękuję za pomoc!

0
AnotherNerdToTheGroup 5 listopad 2018, 22:59

1 odpowiedź

Najlepsza odpowiedź

Dzieje się tak, ponieważ już przeczytałeś znak # i dlatego nie ma go już, gdy robisz read() lub readLine().

Co możesz zrobić, to:

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

Albo to:

topic = ch + helpRdr.readLine();
1
Mark 5 listopad 2018, 23:02