Odczyt pliku na podstawie wzorca

0

Witam!

Chcę napisać generator plików .pdf, który będzie generował te pliki w następujący sposób: Dany jest plik testy.txt , w którym znajdują się pytania (zaczynające się od "1.[spacja]") wraz 4 odpowiedziami ("1a."). Losowo wybieram numer i odnajduję go w pliku testy.txt po czym zapisuje do .pdf, następnie w sposób losowy wybieram 4 odpowiedz (tu włąśnie jest problem). Napisałem coś takiego, ale źle generuje i zapisuje odpowiedzi do .pdf.

import java.awt.Color;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfWriter;
public class generuj
{
   public static void main(String[] args)
   {
      // krok 1
      Document document =new Document();
      try
      {
         // krok 2
         PdfWriter.getInstance(document,new FileOutputStream("HelloWorld.pdf"));
         document.open();

         String linia="";
         String linia2="";
         int liczba=0;
         int ilePytan=3;
         int ileOdpowiedzi=4;
         int pom=0;
         int pom2=0;
         ArrayList <String> odp=new ArrayList();
         odp.add("a");
         odp.add("b");
         odp.add("c");
         odp.add("d");

         ArrayList<String> linie =new ArrayList();

         for(int i=0;i<ilePytan;i++)
         {
            ileOdpowiedzi=4;
            odp.add("a");
            odp.add("b");
            odp.add("c");
            odp.add("d");
            Random r=new Random();
            pom=r.nextInt(ilePytan)+1;

            Pattern wzorzec=Pattern.compile(pom+". ");

            FileReader fr = new FileReader("testy.txt");
            FileReader fr2 = new FileReader("testy.txt");
            BufferedReader bfr = new BufferedReader(fr);
            BufferedReader bfr2 = new BufferedReader(fr2);

            while((linia = bfr.readLine()) != null)
            {
               Matcher sekwencja=wzorzec.matcher(""+linia);
               while(sekwencja.find())
               {
                  document.add(new Phrase(""+linia+"\n",FontFactory.getFont(FontFactory.COURIER,
                  12,Font.NORMAL,new Color(0,0,0))));
               }
            }

            for(int ii=0;ii<4;ii++)
            {
               Random o=new Random();
               pom2=o.nextInt(ileOdpowiedzi);
 
               Pattern odpo=Pattern.compile(pom+odp.get(pom2)+".");
 
               while ((linia2=bfr2.readLine())!=null)
               {
                  Matcher oo=odpo.matcher(""+linia2);
                  while(oo.find())
                  {
                     document.add(new Phrase(""+linia2+"\n",FontFactory.getFont(FontFactory.COURIER,
                     12,Font.NORMAL,new Color(0,0,0))));
                     break;
                  }
                  break;
               }
               ileOdpowiedzi--;
               odp.remove(pom2);
            }
         }
      }
      catch(DocumentException de)
      {
         System.err.println(de.getMessage());
      }
      catch (IOException ioe)
      {
         System.err.println(ioe.getMessage());
      }
      // krok 5
      document.close();
   }
}
0

Jaka jest kolejność linii w pliku tekstowym? Jeśli po pytaniu są cztery wiersze z odpowiedziami, to czytaj je kolejno (do kolekcji) i wywołaj metodę Collections.shuffle.

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