wczytywanie danych z pliku txt

0

Witam, mam za zadanie zrobic w javie program ktory wyszukuje najkrotsza droge w labiryncie, pierwszy krok to wczytanie z pliku tekstowego labiryntu, ktory ma postac bloku np:

11111
10101
10p01
10001
10111
100k1
11111

gdzie 1 to sciana, 0 to przejscie a p-poczatek i k-koniec
program ma przejsc z p do k najkrotsza droga i zaznaczyc ja iksami, przy czym moze przechodzic pod ukos z jednego zera do drugiego gdy mamy
101
001
a nie moze gdy mamy:
10
01

potrzebuje metody ktora wczyta z pliku do macierzy najlepiej dwuwymiarowej lub jakiejs struktury te informacje. Wiem jak buffered readerem wczytywac dane, ale on wczytuje tylko cala linie jako string i traktuje ciag 1100110 jako jeden wyraz, jesli rozdziele go spacjami to wtedy moge odczytywac jako pojedyncze znaki, ale z kolei nie wiem jak oznaczyc koniec wiersza, tzn zrobic tak, zeby wczytywal do tablicy az napotka koniec wiersza a potem koniec calego pliku.

Jesli ktos moze to prosze o tą metodę wczytywania lub moze ktos ma/widzial/robil ten labirynt, to moze podzieli sie ze mna kodem :D

pozdrawiam

0

Czytaj plik po linijce i parsuj ją na macierz za pomocą split("").

0
Koziołek napisał(a)

Czytaj plik po linijce i parsuj ją na macierz za pomocą split("").

tej metody sprobowalem na samym poczatku, nie dziala, jesli chcialbym wczytywac linia po linii to nigdy nie bede mogl tego wykonac, rozwiazalem juz problem w inny sposob

pozdrawiam i zamykam temat wczytywania z pliku

0

To może napiszesz jaki to sposób? Ja mam podobny problem :/

0

A w czym jest problem ?
Zakładam że wszystkie wiersze w pliku wejściowym mają taką samą długość i co najmniej jeden wiersz jest.

ArrayList<String> linie=new ArrayList<String>();
try
{
      BufferedReader in=new BufferedReader (new FileReader(file));
      while (in.ready())
      {
          linie.add(in.readLine());
      }
      in.close();
}
catch(Exception e)
{
       System.out.println(e);
}
int cols=linie.get(0).length();
char[][] tab=new int[linie.size()][cols];
for(int i=0;i<linie.size();i++)
   for(int j=0;j<cols;j++)
      tab[i][j]=linie.get(i).charAt(j);

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