Problem z wczytywaniem pliku txt w Javie

0

Witam mam taki problem moja funikcja do wczytywania pliku wygląda następująco:
[code]public static void odczyt_tekst()
{
String dane="";
String daneksiazek="";
try
{ FileReader tytuly = new FileReader ("tytuly.txt");
FileReader ksiazki= new FileReader ("ksiazki.txt");
BufferedReader bufork = new BufferedReader (ksiazki);
BufferedReader bufort = new BufferedReader (tytuly);

   while(bufort.ready())
   dane+=bufort.readLine();

   while(bufork.ready())
   daneksiazek+=bufork.readLine();

   {
   String pom[]=dane.split("Tytul");
   for(int a=0;a<pom.length;a++)
   {
   String wierszyk=pom[a];
   String s[]=wierszyk.split(" ");
              
      if(8<=s.length)
         {
         tablica.dodaj_tytul(s[1],s[3],s[4],s[6],s[8]);
         }
   }
         System.out.println("Dane ksiazek" + daneksiazek);
         String ksiazkistr[]=daneksiazek.split("Tytul");
            for(int a=0;a<ksiazkistr.length;a++)
            {
               
                String wierszyk=ksiazkistr[a];
                String s[]=wierszyk.split(" ");
      
                if(12<=s.length)
                {
                     System.out.println(s[6]);
                     System.out.println(s[11]);
                     tablica.dodaj_ksiazke(s[6],Integer.parseInt(s[11]));
                }
            }
   }
   bufort.close();
   bufork.close();

   
} catch (IOException e)
        { JOptionPane.showMessageDialog(null, "Blad odczytu pliku tesktowego "+e);
        }

}[/code]

I moje pytanie jest takie, dlaczego jak wczytuje ten plik w programie, to powiela mi się ilość przecinków? Tzn program działa na takiej zasadzie, że podaje tytuł książki, autora itp. Jak zapisuje te dane do pliku to jest ok : [Nazwisko, Autor, ISBN... itp] a jak odczytuje to wyskakuje mi : [NazwiskoAutorISBN,,. ] dlaczego te przecinki się powielają?

0

Warunek 8<=s.length jest zły. Powinno być co najmniej 9, bo odwołujesz się do s[8] czyli 9 elementu. Poza tym w Javie nie stosuj konwencji typu (stała, operator, zmienna) tylko normalną, intuicyjną typu (zmienna, operator, stała). W Javie warunek musi być typu boolean, podczas próby zrobienia czegoś w stylu if (zmienna = 8), kompilator zaprotestuje.

Do sklejania ciągu Stringów posłuż się StringBuilderem, da ci to wyższą wydajność (tzn powinno). Konstrukcja typu String += String, powoduje utworzenie nowego Stringa (pamiętaj, Stringi są niemutowalne, a operator += to lukier składniowy).

Nie widać tu kodu zapisującego do pliku. Jednak pamiętaj że split(" ") nie usunie ci przecinków, tylko spacje.

Poza tym kod paskudnie sformatowany. W NetBeans użyj kombinacji Alt+Shift+F do automatycznego formatowania kodu.

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