Odczyt konkretnej linii z pliku tekstowego

0

Program pobiera 1 linie tekstu a chce żeby pobierał np.5

import java.io.*;
public class zdanie
{
    public static void main(String args[]) throws IOException
    {
        String zd;
        BufferedReader br = new BufferedReader (new FileReader("zd.txt"));
        System.out.print("Podaj zadanie: ");
        zd = br.readLine();
        int a,i;
        a=0;
        for (i=0;i<zd.length();i++)
        {
                if(zd.charAt(i) == 'a'||zd.charAt(i) == 'A')
            	a=a+1;
        }
        System.out.println("W zdaniu jest "+a+" literek 'a' i 'A'.");
        br.close();
    }
}
0

Dziwi Cię, że readLine(); czyta jedną linie?
Jak chcesz 5 linii to wywołaj tą funkcję 5 razy.

0

Gdybym w tekście było 100 linijek to bym musiał 100x nie da się tego jakoś łatwiej ?

0

W pętli. Najpierw możesz zapytać ile linijek użytkownik chce wczytać i tyle razy wykonać readLine w pętli. Lub dać nieskończoną pętlę i przerwać gdy użytkownik poda określony znak. Chyba że od razu wiesz ile linijek będziesz wczytywał.

0

No to jak bym miał 5 zdań to jak to powinno wyglądać, bo jak daje for(i=0;i<5;i++) i nie działa.

0
        BufferedReader br=new BufferedReader (new FileReader("zd.txt"));
        for(int k=0;k<5;++k)
        {
            String zd=br.readLine();
            int a=0;
            for (int i=0;i<zd.length();++i) if((zd.charAt(i)== 'a')||(zd.charAt(i)== 'A')) ++a;
            System.out.println("W zdaniu '"+zd+"' jest "+a+" literek 'a' i 'A'.");
        }
        br.close();
0

Nie zauważyłem że ty z pliku pobierasz. Możesz to zrobić tak

   
   FileReader fr = null; 
   String linia = "";
   ArrayList<string> list = new ArrayList<string>();
   // OTWIERANIE PLIKU:
   try {
     fr = new FileReader("plik.txt");
   } catch (FileNotFoundException e) {
       System.out.println("BŁĄD PRZY OTWIERANIU PLIKU!");
       System.exit(1);
   }

   BufferedReader bfr = new BufferedReader(fr);
   // ODCZYT KOLEJNYCH LINII Z PLIKU:
   try {
     while((linia = bfr.readLine()) != null){
        list.add(linia);
     }
    } catch (IOException e) {
        System.out.println("BŁĄD ODCZYTU Z PLIKU!");
        System.exit(2);
   }

   // ZAMYKANIE PLIKU
   try {
     fr.close();
    } catch (IOException e) {
         System.out.println("BŁĄD PRZY ZAMYKANIU PLIKU!");
         System.exit(3);
        }
    }
0

Ten wiersz usuń.

System.out.println("Podaj zdanie: ");

Jeśli chcesz przeczytać wszystkie wiersze, to tak:

int a,i;
while((zd = br.readLine) != null)
{
        zd = br.readLine();        
        a=0;
        for (i=0;i<zd.length();i++)
        {
                if(zd.charAt(i) == 'a'||zd.charAt(i) == 'A')
                a=a+1;
        }
        System.out.println("W zdaniu "+zd+" jest "+a+" literek 'a' i 'A'.");
}
br.close();
0

Pytanie jak w temacie, jak wyświetlić konkretną linię? Mam plik tekstowy który odczytuję i zapisuję w tablicy, chciałbym wyświetlić jego zawartość np. od 3 linijki. Da się to jakoś zrobić? Potrafię wyświetlić od danego elementu w tablicy, np. od 3 słowa, ale jak to zrobić z linią?

0

Jaja sobie robisz? Zapisuje do tablicy (użyj raczej kolekcji, bo przecież nie znasz ilości linijek) linijki, a nie słowa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1