Odczyt z pliku.

0

Cześć, metoda ma sprawdzać co określoną ilość linii (1,8,15,22,29,36 itd) czy dana linia jest równa zmiennej string "a" jeżeli jest równa, to ma zapisać 6 kolejnych linii do tablicy. Prawie wszystko działa poprawnie, ale z niewiadomych mi przyczyn program stwierdza, że linia pierwsza nie jest równa zmiennej string "a" a niestety są one równe :P

public class Pytania 
{
 File file = new File("zestaw1.txt");

void Wczytajpytania(String a) throws FileNotFoundException, IOException
  {
     int licznik = 0;
     
       Scanner odczyt = new Scanner((file), "UTF-8");

          
       while(odczyt.hasNextLine())
       {    
           if(odczyt.nextLine().equals(a))
           {
               for(int j= 0; j<6; j++)
                   tabpytania[licznik][j] = odczyt.nextLine();
                   
               licznik++;
                   
            }
           else
               for(int j=0;j<6;j++)
                   odczyt.nextLine();
                  
        }
 
        
      }
}
0

Oczywiście tablica "tabpytania" jest zadeklarowana w klasie "Pytania":

String [][] tabpytania = new String[5][6]

Sam plik jest tak skonstruowany, że do tablicy wczytamy 5 razy po 6 linii.

0

Zaczynasz czytanie od drugiej linii (nextline to następna, nigdy nie sprawdzasz pierwszej).

0
Biały Lew napisał(a):

Zaczynasz czytanie od drugiej linii (nextline to następna, nigdy nie sprawdzasz pierwszej).

Ok, hmm czyli jak miałby wyglądać kod by sprawdzał 1 linie i potem 8,15,22,29 itd -> jeżeli są ok to 6 kolejnych linii wczytuje do tablicy (zakładamy, że wczyta max 5 razy po 6). W załączniku plik na którym operuje.

0

Kod czytający jest prawie poprawny (brakuje zamknięcia pliku odczyt.close()), ale sam plik jest błędny - usuń z niego BOM. Jeden ze sposobów usunięcia to otwarcie pliku w programie notepad++ i zapisanie go w formacie UTF-8(bez BOM).

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